diff --git a/pom.xml b/pom.xml index e7af2ad..657d0bb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ gq.unurled raxen - 0.0.1 + 0.0.2 jar Raxen diff --git a/src/main/java/gq/unurled/raxen/Raxen.java b/src/main/java/gq/unurled/raxen/Raxen.java index 0c7a49c..261cedd 100644 --- a/src/main/java/gq/unurled/raxen/Raxen.java +++ b/src/main/java/gq/unurled/raxen/Raxen.java @@ -24,13 +24,14 @@ public final class Raxen extends JavaPlugin { private static final String version = "0.0.1"; private final PluginManager pm = getServer().getPluginManager(); + @Getter private static Raxen plugin; private static Logger logger; - private static MongoDB mongoDB; - private static Config config; + @Getter + private static StorageManager storageManager; private static PlayerManager playerManager; private static ProfileManager profileManager; @@ -50,7 +51,8 @@ public final class Raxen extends JavaPlugin { public void onEnable() { plugin = this; logger = getLogger(); - mongoDB = new MongoDB(); + config = new Config(this); + storageManager = new StorageManager(this); //config = new Config(this); profileManager = new ProfileManager(this); @@ -112,10 +114,6 @@ public final class Raxen extends JavaPlugin { return playerManager; } - public static MongoDB getMongoDB() { - return mongoDB; - } - public static PlayerConfig getPlayerConfig() { return playerConfig; } diff --git a/src/main/java/gq/unurled/raxen/config/Config.java b/src/main/java/gq/unurled/raxen/config/Config.java index 254722a..2005829 100644 --- a/src/main/java/gq/unurled/raxen/config/Config.java +++ b/src/main/java/gq/unurled/raxen/config/Config.java @@ -18,6 +18,7 @@ public class Config { public Config(Raxen main) { this.main = main; this.config = main.getConfig(); + this.init(); } public void init() { diff --git a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java index f49dc87..3dbf118 100644 --- a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java +++ b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java @@ -9,17 +9,20 @@ import gq.unurled.raxen.components.player.Skills; import gq.unurled.raxen.components.player.Storage; import gq.unurled.raxen.components.player.Storages.EnderChest; import gq.unurled.raxen.manager.ProfileManager; +import gq.unurled.raxen.manager.StorageManager; import gq.unurled.raxen.utils.MongoDB; import gq.unurled.raxen.utils.Utils; import net.kyori.adventure.text.Component; import org.bson.Document; import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -27,31 +30,21 @@ import static gq.unurled.raxen.utils.Utils.log; public class PlayerConfig { - private Raxen main; + private static Raxen main; private MongoDB mongoDB; private MongoCollection mongoCollection; - private ProfileManager profileManager; + private static ProfileManager profileManager; + private static StorageManager sto; public PlayerConfig(Raxen main) { this.main = main; - this.mongoDB = main.getMongoDB(); + this.sto = main.getStorageManager(); + this.mongoDB = sto.getMongo(); this.mongoCollection = mongoDB.getMongoCollection(); this.profileManager = main.getProfileManager(); } - public void savePlayerConfig(Player player) { - Skills skills = profileManager.getPlayerProfile(player.getUniqueId()).getSkils(); - Inventory inv = player.getInventory(); - List listInv = new ArrayList(); - Integer reverse = 0; - for(ItemStack it : inv) { - reverse = reverse + 1; - if(it != null && it.getType() != Material.AIR) { - String s = Utils.itemStackSerilize(it, reverse); - listInv.add(s); - } - } - String invstr = Utils.listItemStackSerelize(listInv); + public void saveUsingMongoDB(Player player, Skills skills, String invstr, Integer reverse) { Document doc = new Document("uuid", player.getUniqueId().toString()) .append("name", player.getName()) .append("health", skills.getHealth()) @@ -82,10 +75,36 @@ public class PlayerConfig { else { mongoCollection.replaceOne(Filters.eq("uuid", player.getUniqueId().toString()), doc); } - log("Player: " + player.getName() + " data successfully saved!"); } - public void loadPlayerConfig(Player player) { + public void saveUsingYml(Player player, Skills skills, String invstr, Integer reverse) throws IOException { + FileConfiguration config = sto.createYml(player); + config.set("name", player.getName()); + config.set("health", skills.getHealth()); + config.set("strength", skills.getStrength()); + config.set("speed", skills.getSpeed()); + config.set("defense", skills.getDefense()); + config.set("inv", invstr); + if (profileManager.getPlayerStorage(player.getUniqueId()) != null) { + if(profileManager.getPlayerStorage(player.getUniqueId()).getEc() != null) { + EnderChest ec = profileManager.getPlayerStorage(player.getUniqueId()).getEc(); + List list = new ArrayList(); + reverse = 0; + for(ItemStack it : ec.getEc()) { + reverse += 1; + if(it != null) { + String s = Utils.itemStackSerilize(it, reverse); + list.add(s); + } + } + String ecstr = Utils.listItemStackSerelize(list); + config.set("ec", ecstr); + } + } + config.save(main.getDataFolder() + "/" + player.getUniqueId() + "/" + "playerInfo.yml"); + } + + public void loadUsingMongoDB(Player player) { Document playerDoc = mongoCollection.find(Filters.eq("uuid", player.getUniqueId().toString())).first(); if(playerDoc == null) { profileManager.createNewProfile(player); @@ -95,6 +114,7 @@ public class PlayerConfig { } Skills skills = new Skills(playerDoc.getInteger("health"), playerDoc.getInteger("defense"), playerDoc.getInteger("speed"), playerDoc.getInteger("strength")); Profile profile = new Profile(skills); + profileManager.setPlayerProfile(player.getUniqueId(), profile); Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest")); if(playerDoc.getString("ec") != null) { @@ -111,8 +131,67 @@ public class PlayerConfig { gq.unurled.raxen.components.player.Storages.Inventory invv = new gq.unurled.raxen.components.player.Storages.Inventory(inv); Inventories invvv = new Inventories(invv); profileManager.setPlayerInventory(player.getUniqueId(), invvv); - log("Player: " + player.getName() + " data successfully loaded!"); + } + public void loadUsingYml(Player player) { + FileConfiguration config = sto.createYml(player); + Skills skills = new Skills((Integer) config.get("health"), (Integer) config.get("defense"), (Integer) config.get("speed"), (Integer) config.get("strength")); + Profile profile = new Profile(skills); + profileManager.setPlayerProfile(player.getUniqueId(), profile); + + Inventory ec = Bukkit.createInventory(null, 54, Component.text("Ender Chest")); + if((String) config.get("ec") != null) { + ItemStack[] itList = Utils.listItemStackDeserilize((String) config.get("ec")); + ec.addItem(itList); + } + EnderChest ecc = new EnderChest(ec); + Storage storage = new Storage(ecc); + profileManager.setPlayerStorage(player.getUniqueId(), storage); + Inventory inv = Bukkit.createInventory(player, InventoryType.PLAYER); + ItemStack[] itListInv = Utils.listItemStackDeserilize((String) config.getString("inv")); + inv.addItem(itListInv); + player.updateInventory(); + gq.unurled.raxen.components.player.Storages.Inventory invv = new gq.unurled.raxen.components.player.Storages.Inventory(inv); + Inventories invvv = new Inventories(invv); + profileManager.setPlayerInventory(player.getUniqueId(), invvv); + } + + public void savePlayerConfig(Player player) { + Skills skills = profileManager.getPlayerProfile(player.getUniqueId()).getSkils(); + Inventory inv = player.getInventory(); + List listInv = new ArrayList(); + Integer reverse = 0; + for(ItemStack it : inv) { + reverse = reverse + 1; + if(it != null && it.getType() != Material.AIR) { + String s = Utils.itemStackSerilize(it, reverse); + listInv.add(s); + } + } + String invstr = Utils.listItemStackSerelize(listInv); + + + switch(sto.getCurrently()) { + case "MONGODB": + saveUsingMongoDB(player, skills, invstr, reverse); + case "MYSQL": + case "YML": + saveUsingMongoDB(player, skills, invstr, reverse); + } + + log("Player: " + player.getName() + " data successfully saved!"); + } + + public void loadPlayerConfig(Player player) { + switch(sto.getCurrently()) { + case "MONGODB": + loadUsingMongoDB(player); + case "MYSQL": + case "YML": + loadUsingYml(player); + } + + log("Player: " + player.getName() + " data successfully loaded!"); } } diff --git a/src/main/java/gq/unurled/raxen/manager/StorageManager.java b/src/main/java/gq/unurled/raxen/manager/StorageManager.java new file mode 100644 index 0000000..6f31789 --- /dev/null +++ b/src/main/java/gq/unurled/raxen/manager/StorageManager.java @@ -0,0 +1,69 @@ +package gq.unurled.raxen.manager; + +import gq.unurled.raxen.Raxen; +import gq.unurled.raxen.utils.MongoDB; +import lombok.Getter; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +import java.io.File; +import java.io.IOException; +import java.util.stream.IntStream; + +import static gq.unurled.raxen.utils.Utils.error; +import static gq.unurled.raxen.utils.Utils.log; + +public class StorageManager { + + private static Raxen main; + private static FileConfiguration config; + + @Getter + private static MongoDB mongo; + @Getter + private static String currently; + + public StorageManager(Raxen main) { + this.main = main.getPlugin(); + this.config = main.getConfig(); + } + + public static void connect() { + String s = (String) config.get("storage"); + switch(s) { + case "MONGODB": + mongo.connect(); + currently = s; + case "MYSQL": + error("Currently not implemented, switching to YML"); + currently = "YML"; + case "YML": + currently = s; + } + } + + public static FileConfiguration createYml(Player player) { + String name = player.getName(); + + File customFile; + FileConfiguration customConfig; + log(main.getDataFolder() + "/" + player.getUniqueId() + "custom.yml"); + customFile = new File(main.getDataFolder() + "/" + player.getUniqueId(), "playerInfo.yml"); + + if (!customFile.exists()) { + customFile.getParentFile().mkdirs(); + main.saveResource("playerInfo.yml", false); + } + + customConfig = new YamlConfiguration(); + try { + customConfig.load(customFile); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + return customConfig; + } + +} \ No newline at end of file diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b654e9d..6c9ed9e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,3 +1,5 @@ version: "${project.version}" motd: "YAY, Super server!" -motd-reload: "Server reloading!" \ No newline at end of file +motd-reload: "Server reloading!" + +storage: "MONGODB" #switch between "MONGODB", "MYSQL"(not implemented), "YML"(currzently making it) \ No newline at end of file