Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 69ebaa1

Browse files
Add files via upload
1 parent 7d75103 commit 69ebaa1

39 files changed

Lines changed: 3578 additions & 0 deletions

‎ozaii/apis/base/FactoryApi.java‎

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package ozaii.apis.base;
2+
3+
import ozaii.apis.managers.CoinApi;
4+
import ozaii.apis.managers.LevelApi;
5+
import ozaii.factory.DatabaseFactory;
6+
import ozaii.factory.SettingsFactory;
7+
import ozaii.managers.CoinManager;
8+
import ozaii.managers.LevelManager;
9+
import ozaii.managers.ProfileManager;
10+
import ozaii.ozaii;
11+
12+
public class FactoryApi {
13+
14+
private static final String SERVER_NAME = "OMC";
15+
private static final String SERVER_VERSION = "1.0.0";
16+
private static final String OWNER = "ozaiithejava";
17+
private static final String OWNER_DISCORD = "ozaii1337";
18+
19+
20+
private static DatabaseFactory DATABASE_FACTORY ;
21+
private static SettingsFactory SETTINGS_FACTORY ;
22+
private static CoinManager COIN_MANAGER ;
23+
private static LevelManager LEVEL_MANAGER ;
24+
private static ProfileManager PROFILE_MANAGER ;
25+
private static LevelApi LEVEL_API ;
26+
private static CoinApi COIN_API ;
27+
28+
private static final ozaii instance = new ozaii();
29+
30+
public FactoryApi(){
31+
DATABASE_FACTORY = instance.getDatabaseFactory();
32+
SETTINGS_FACTORY = instance.getSettingsFactory();
33+
COIN_MANAGER = instance.getCoinManager();
34+
LEVEL_MANAGER = instance.getLevelManager();
35+
PROFILE_MANAGER = instance.getProfileManager();
36+
LEVEL_API = new LevelApi(LEVEL_MANAGER);
37+
COIN_API = new CoinApi(COIN_MANAGER);
38+
}
39+
40+
public static ozaii getInstance(){return instance;}
41+
public static DatabaseFactory getDatabaseFactory(){return DATABASE_FACTORY;}
42+
public static SettingsFactory getSettingsFactory(){return SETTINGS_FACTORY;}
43+
public static CoinManager getCoinManager(){return COIN_MANAGER;}
44+
public static LevelManager getLevelManager(){return LEVEL_MANAGER;}
45+
public static ProfileManager getProfileManager(){return PROFILE_MANAGER;}
46+
public static String getServerName(){return SERVER_NAME;}
47+
public static String getServerVersion(){return SERVER_VERSION;}
48+
public static LevelApi getLevelManagerApi(){return LEVEL_API;}
49+
public static CoinApi getCoinManagerApi(){return COIN_API;}
50+
public static String getOwner(){return OWNER;}
51+
public static String getOwnerDiscord(){return OWNER_DISCORD;}
52+
}

‎ozaii/apis/managers/CoinApi.java‎

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package ozaii.apis.managers;
2+
3+
4+
import ozaii.managers.CoinManager;
5+
6+
import java.util.concurrent.CompletableFuture;
7+
import java.util.logging.Logger;
8+
9+
public class CoinApi {
10+
private final CoinManager coinManager;
11+
private static final Logger logger = Logger.getLogger(CoinApi.class.getName());
12+
13+
public CoinApi(CoinManager coinManager) {
14+
this.coinManager = coinManager;
15+
}
16+
17+
/**
18+
* Creates a new bank account for a player.
19+
*
20+
* @param playerName The name of the player.
21+
*/
22+
public void createAccount(String playerName) {
23+
coinManager.createBankAccount(playerName)
24+
.thenRun(() -> logger.info("Account created for player: " + playerName))
25+
.exceptionally(ex -> {
26+
logger.severe("Failed to create account for player " + playerName + ": " + ex.getMessage());
27+
return null;
28+
});
29+
}
30+
31+
/**
32+
* Deposits coins into a player's account.
33+
*
34+
* @param playerName The name of the player.
35+
* @param amount The amount to deposit.
36+
*/
37+
public void depositCoins(String playerName, double amount) {
38+
coinManager.deposit(playerName, amount)
39+
.thenRun(() -> logger.info(amount + " coins deposited to " + playerName))
40+
.exceptionally(ex -> {
41+
logger.severe("Failed to deposit coins for " + playerName + ": " + ex.getMessage());
42+
return null;
43+
});
44+
}
45+
46+
/**
47+
* Withdraws coins from a player's account.
48+
*
49+
* @param playerName The name of the player.
50+
* @param amount The amount to withdraw.
51+
*/
52+
public void withdrawCoins(String playerName, double amount) {
53+
coinManager.remove(playerName, amount)
54+
.thenRun(() -> logger.info(amount + " coins withdrawn from " + playerName))
55+
.exceptionally(ex -> {
56+
logger.severe("Failed to withdraw coins for " + playerName + ": " + ex.getMessage());
57+
return null;
58+
});
59+
}
60+
61+
/**
62+
* Transfers coins from one player to another.
63+
*
64+
* @param sender The name of the player sending the coins.
65+
* @param taker The name of the player receiving the coins.
66+
* @param amount The amount to transfer.
67+
*/
68+
public void transferCoins(String sender, String taker, double amount) {
69+
coinManager.transferAccount(sender, taker, amount)
70+
.thenRun(() -> logger.info("Transferred " + amount + " coins from " + sender + " to " + taker))
71+
.exceptionally(ex -> {
72+
logger.severe("Failed to transfer coins from " + sender + " to " + taker + ": " + ex.getMessage());
73+
return null;
74+
});
75+
}
76+
77+
/**
78+
* Gets the current coin balance for a player.
79+
*
80+
* @param playerName The name of the player.
81+
* @return A future containing the coin balance.
82+
*/
83+
public CompletableFuture<Double> getBalance(String playerName) {
84+
return coinManager.getCoins(playerName)
85+
.thenApply(balance -> {
86+
logger.info("Balance for " + playerName + ": " + balance);
87+
return balance;
88+
})
89+
.exceptionally(ex -> {
90+
logger.severe("Failed to fetch balance for " + playerName + ": " + ex.getMessage());
91+
return 0.0;
92+
});
93+
}
94+
95+
/**
96+
* Deletes a player's bank account.
97+
*
98+
* @param playerName The name of the player.
99+
*/
100+
public void deleteAccount(String playerName) {
101+
coinManager.deleteAccount(playerName)
102+
.thenRun(() -> logger.info("Deleted account for player: " + playerName))
103+
.exceptionally(ex -> {
104+
logger.severe("Failed to delete account for " + playerName + ": " + ex.getMessage());
105+
return null;
106+
});
107+
}
108+
109+
/**
110+
* Resets a player's coin balance to zero.
111+
*
112+
* @param playerName The name of the player.
113+
*/
114+
public void resetCoins(String playerName) {
115+
coinManager.resetCoins(playerName)
116+
.thenRun(() -> logger.info("Reset coins for player: " + playerName))
117+
.exceptionally(ex -> {
118+
logger.severe("Failed to reset coins for " + playerName + ": " + ex.getMessage());
119+
return null;
120+
});
121+
}
122+
}

‎ozaii/apis/managers/LevelApi.java‎

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package ozaii.apis.managers;
2+
3+
4+
import ozaii.managers.LevelManager;
5+
6+
import java.util.concurrent.CompletableFuture;
7+
8+
public class LevelApi {
9+
private final LevelManager levelManager;
10+
11+
public LevelApi(LevelManager levelManager) {
12+
// LevelManager'ı başlat ve ayar dosyasını ilet
13+
this.levelManager = levelManager;
14+
}
15+
16+
/**
17+
* Oyuncunun seviyesini getirir.
18+
*
19+
* @param playerName Oyuncu adı
20+
* @return Oyuncunun seviyesini içeren bir CompletableFuture
21+
*/
22+
public CompletableFuture<Integer> getLevelAsync(String playerName) {
23+
return levelManager.getLevelAsync(playerName);
24+
}
25+
26+
/**
27+
* Oyuncunun seviyesini arttırır.
28+
*
29+
* @param playerName Oyuncu adı
30+
* @param amount Artış miktarı
31+
* @return İşlem tamamlandığında bir CompletableFuture döner
32+
*/
33+
public CompletableFuture<Void> increaseLevelAsync(String playerName, int amount) {
34+
return levelManager.increaseLevelAsync(playerName, amount);
35+
}
36+
37+
/**
38+
* Oyuncunun seviyesini düşürür.
39+
*
40+
* @param playerName Oyuncu adı
41+
* @param amount Azaltma miktarı
42+
* @return İşlem tamamlandığında bir CompletableFuture döner
43+
*/
44+
public CompletableFuture<Void> decreaseLevelAsync(String playerName, int amount) {
45+
return levelManager.decreaseLevelAsync(playerName, amount);
46+
}
47+
48+
/**
49+
* Oyuncunun seviyesini sıfırlar (1'e çeker).
50+
*
51+
* @param playerName Oyuncu adı
52+
* @return İşlem tamamlandığında bir CompletableFuture döner
53+
*/
54+
public CompletableFuture<Void> resetLevelAsync(String playerName) {
55+
return levelManager.resetLevelAsync(playerName);
56+
}
57+
58+
/**
59+
* Oyuncunun seviyesini belirli bir değere ayarlar.
60+
*
61+
* @param playerName Oyuncu adı
62+
* @param level Ayarlanacak seviye
63+
* @return İşlem tamamlandığında bir CompletableFuture döner
64+
*/
65+
public CompletableFuture<Void> setLevelAsync(String playerName, int level) {
66+
return levelManager.setLevelAsync(playerName, level);
67+
}
68+
69+
/**
70+
* Oyuncu için yeni bir seviye hesabı oluşturur.
71+
*
72+
* @param playerName Oyuncu adı
73+
* @return İşlem tamamlandığında bir CompletableFuture döner
74+
*/
75+
public CompletableFuture<Void> createLevelAccountAsync(String playerName) {
76+
return levelManager.createLevelAccountAsync(playerName);
77+
}
78+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package ozaii.apis.player;
2+
3+
4+
import java.util.concurrent.CompletableFuture;
5+
6+
import org.bukkit.Location;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.inventory.PlayerInventory;
9+
10+
/**
11+
* AsyncPlayerData API - Asenkron oyuncu verilerini işlemek için kullanılan API.
12+
*/
13+
public interface AsyncPlayerData {
14+
15+
/**
16+
* Oyuncunun envanterini asenkron olarak getirir.
17+
*
18+
* @param player Envanteri alınacak oyuncu
19+
* @return Oyuncunun envanter verilerini içeren CompletableFuture
20+
*/
21+
CompletableFuture<PlayerInventory> getInventoryAsync(Player player);
22+
23+
/**
24+
* Oyuncunun konumunu asenkron olarak getirir.
25+
*
26+
* @param player Konumu alınacak oyuncu
27+
* @return Oyuncunun mevcut konumunu içeren CompletableFuture
28+
*/
29+
CompletableFuture<Location> getLocationAsync(Player player);
30+
31+
/**
32+
* Oyuncunun belirli bir veri anahtarıyla ilişkili özel verisini asenkron olarak getirir.
33+
*
34+
* @param player Verisi alınacak oyuncu
35+
* @param key Özel veri anahtarı
36+
* @return Veriyi içeren CompletableFuture
37+
*/
38+
CompletableFuture<Object> getCustomDataAsync(Player player, String key);
39+
40+
/**
41+
* Oyuncunun belirli bir veri anahtarıyla ilişkili özel verisini asenkron olarak ayarlar.
42+
*
43+
* @param player Verisi ayarlanacak oyuncu
44+
* @param key Özel veri anahtarı
45+
* @param value Ayarlanacak değer
46+
* @return İşlemin tamamlanmasını temsil eden CompletableFuture
47+
*/
48+
CompletableFuture<Void> setCustomDataAsync(Player player, String key, Object value);
49+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package ozaii.apis.player;
2+
3+
4+
import org.bukkit.Bukkit;
5+
import org.bukkit.Location;
6+
import org.bukkit.entity.Player;
7+
import org.bukkit.inventory.PlayerInventory;
8+
9+
import java.util.Map;
10+
import java.util.concurrent.CompletableFuture;
11+
import java.util.concurrent.ConcurrentHashMap;
12+
13+
/**
14+
* AsyncPlayerDataAPI - Asenkron oyuncu verilerini işlemek için API sınıfı.
15+
*/
16+
public class AsyncPlayerDataAPI implements AsyncPlayerData {
17+
18+
// Oyuncuların özel verilerini saklamak için bir yapı.
19+
private final Map<String, Map<String, Object>> playerCustomData = new ConcurrentHashMap<>();
20+
21+
@Override
22+
public CompletableFuture<PlayerInventory> getInventoryAsync(Player player) {
23+
return CompletableFuture.supplyAsync(player::getInventory);
24+
}
25+
26+
@Override
27+
public CompletableFuture<Location> getLocationAsync(Player player) {
28+
return CompletableFuture.supplyAsync(player::getLocation);
29+
}
30+
31+
@Override
32+
public CompletableFuture<Object> getCustomDataAsync(Player player, String key) {
33+
return CompletableFuture.supplyAsync(() -> {
34+
Map<String, Object> data = playerCustomData.get(player.getUniqueId().toString());
35+
if (data != null) {
36+
return data.get(key);
37+
}
38+
return null;
39+
});
40+
}
41+
42+
@Override
43+
public CompletableFuture<Void> setCustomDataAsync(Player player, String key, Object value) {
44+
return CompletableFuture.runAsync(() -> {
45+
String playerId = player.getUniqueId().toString();
46+
playerCustomData.computeIfAbsent(playerId, k -> new ConcurrentHashMap<>()).put(key, value);
47+
});
48+
}
49+
50+
/**
51+
* Oyuncunun özel verilerini temizler. Örneğin, oyuncu sunucudan ayrıldığında çağrılabilir.
52+
*
53+
* @param player Oyuncu
54+
* @return İşlemin tamamlanmasını temsil eden CompletableFuture
55+
*/
56+
public CompletableFuture<Void> clearCustomDataAsync(Player player) {
57+
return CompletableFuture.runAsync(() -> playerCustomData.remove(player.getUniqueId().toString()));
58+
}
59+
60+
/**
61+
* Sunucuda çevrimiçi olan tüm oyuncuların konumlarını asenkron olarak getirir.
62+
*
63+
* @return Oyuncular ve konumlarının bir haritasını içeren CompletableFuture
64+
*/
65+
public CompletableFuture<Map<Player, Location>> getAllPlayerLocationsAsync() {
66+
return CompletableFuture.supplyAsync(() -> {
67+
Map<Player, Location> locations = new ConcurrentHashMap<>();
68+
for (Player player : Bukkit.getOnlinePlayers()) {
69+
locations.put(player, player.getLocation());
70+
}
71+
return locations;
72+
});
73+
}
74+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /