From e6ea2a59cbc2cd8bf7cb57d91a121640ac8157b3 Mon Sep 17 00:00:00 2001 From: unurled Date: Fri, 25 Feb 2022 19:57:15 +0100 Subject: [PATCH] 0.4.6 classes and world gen, thinking of going with mw-core instead of doing own thing optimzed import also --- build.gradle | 13 +-- src/main/java/gq/unurled/raxen/Raxen.java | 5 +- .../entity/EntityNamespacedKey.java | 1 - .../raxen/components/gui/ItemListGui.java | 1 - .../raxen/components/player/RaxenPlayer.java | 3 +- .../components/player/classes/Class.java | 23 ++++++ .../components/player/classes/Classes.java | 80 +++++++++++++++++++ .../gq/unurled/raxen/config/PlayerConfig.java | 2 +- .../raxen/listener/entity/SpawnEvent.java | 2 +- .../unurled/raxen/manager/EntityManager.java | 3 +- .../gq/unurled/raxen/manager/ItemManager.java | 4 +- .../unurled/raxen/manager/PlayerManager.java | 25 +++++- .../unurled/raxen/manager/StorageManager.java | 45 +++++++++++ .../unurled/raxen/manager/WorldManager.java | 75 +++++++++++++++++ .../java/gq/unurled/raxen/utils/Items.java | 3 - .../java/gq/unurled/raxen/utils/Utils.java | 1 - .../gq/unurled/raxen/utils/WorldEdit.java | 2 - src/main/resources/Class/Swordsmann.yml | 5 ++ src/main/resources/Worlds/example_worlds.yml | 2 + 19 files changed, 271 insertions(+), 24 deletions(-) create mode 100644 src/main/java/gq/unurled/raxen/components/player/classes/Classes.java create mode 100644 src/main/java/gq/unurled/raxen/manager/WorldManager.java create mode 100644 src/main/resources/Class/Swordsmann.yml create mode 100644 src/main/resources/Worlds/example_worlds.yml diff --git a/build.gradle b/build.gradle index 98ba87d..da51c93 100644 --- a/build.gradle +++ b/build.gradle @@ -42,6 +42,7 @@ repositories { maven { url = uri('https://repo.maven.apache.org/maven2/') } + mavenCentral() } dependencies { @@ -52,9 +53,9 @@ dependencies { testAnnotationProcessor 'org.projectlombok:lombok:1.18.22' //mongo stuff - implementation 'org.mongodb:mongodb-driver-sync:4.4.0' - implementation 'org.mongodb:bson:4.4.0' - implementation 'org.mongodb:mongodb-driver-core:4.4.0' + implementation 'org.mongodb:mongodb-driver-sync:4.5.0' + implementation 'org.mongodb:bson:4.5.0' + implementation 'org.mongodb:mongodb-driver-core:4.5.0' implementation 'de.tr7zw:item-nbt-api-plugin:2.9.0' compileOnly 'io.papermc.paper:paper-api:1.18.1-R0.1-SNAPSHOT' @@ -62,14 +63,14 @@ dependencies { compileOnly 'net.luckperms:api:5.3' compileOnly 'com.github.MilkBowl:VaultAPI:1.7.1' compileOnly 'net.essentialsx:EssentialsX:2.19.2' - compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Core:2.0.0-SNAPSHOT' - compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit:2.0.0-SNAPSHOT' + compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Core:2.0.1' + compileOnly 'com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit:2.0.1' compileOnly fileTree(dir: 'libs', include: '*.jar') paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:1.18.1-R0.1-SNAPSHOT") } group = 'gq.unurled' -version = '0.4.5' +version = '0.4.6' description = 'Raxen' java.sourceCompatibility = JavaVersion.VERSION_17 diff --git a/src/main/java/gq/unurled/raxen/Raxen.java b/src/main/java/gq/unurled/raxen/Raxen.java index 610b4a3..4e0ab98 100644 --- a/src/main/java/gq/unurled/raxen/Raxen.java +++ b/src/main/java/gq/unurled/raxen/Raxen.java @@ -10,7 +10,6 @@ import gq.unurled.raxen.utils.Reload; import gq.unurled.raxen.utils.Vault; import lombok.Getter; import net.kyori.adventure.text.Component; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -21,7 +20,7 @@ public final class Raxen extends JavaPlugin { private static final String prefix = ChatColor.AQUA + "Rx" + ChatColor.LIGHT_PURPLE + "> "; @Getter - private static String version = "0.4.5"; + private static String version = "0.4.6"; private final PluginManager pm = getServer().getPluginManager(); private static Raxen plugin; @@ -29,6 +28,7 @@ public final class Raxen extends JavaPlugin { private static Logger logger; private static Config config; + private static WorldManager worldManager; @Getter private static StorageManager storageManager; @@ -62,6 +62,7 @@ public final class Raxen extends JavaPlugin { //Config and storage sruff config = new Config(this); + worldManager = new WorldManager(this); storageManager = new StorageManager(this); //Managers diff --git a/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java b/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java index a85fc7e..4719fac 100644 --- a/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java +++ b/src/main/java/gq/unurled/raxen/components/entity/EntityNamespacedKey.java @@ -2,7 +2,6 @@ package gq.unurled.raxen.components.entity; import gq.unurled.raxen.Raxen; import org.bukkit.NamespacedKey; -import org.checkerframework.checker.units.qual.N; public class EntityNamespacedKey { diff --git a/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java b/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java index e17f218..a6012ac 100644 --- a/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java +++ b/src/main/java/gq/unurled/raxen/components/gui/ItemListGui.java @@ -14,7 +14,6 @@ import org.bukkit.inventory.ItemStack; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import static gq.unurled.raxen.utils.Items.*; diff --git a/src/main/java/gq/unurled/raxen/components/player/RaxenPlayer.java b/src/main/java/gq/unurled/raxen/components/player/RaxenPlayer.java index a55f200..d5c2672 100644 --- a/src/main/java/gq/unurled/raxen/components/player/RaxenPlayer.java +++ b/src/main/java/gq/unurled/raxen/components/player/RaxenPlayer.java @@ -16,7 +16,8 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; -import java.util.*; +import java.util.ArrayList; +import java.util.List; import static gq.unurled.raxen.utils.Items.setItemsToInventory; import static gq.unurled.raxen.utils.Utils.debug; diff --git a/src/main/java/gq/unurled/raxen/components/player/classes/Class.java b/src/main/java/gq/unurled/raxen/components/player/classes/Class.java index ec6ca6f..94e2183 100644 --- a/src/main/java/gq/unurled/raxen/components/player/classes/Class.java +++ b/src/main/java/gq/unurled/raxen/components/player/classes/Class.java @@ -1,4 +1,27 @@ package gq.unurled.raxen.components.player.classes; +import lombok.Getter; +import net.kyori.adventure.text.Component; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import static gq.unurled.raxen.utils.Utils.color; + public class Class { + + @Getter + String name; + @Getter + String colorName; + @Getter + String ID; + @Getter + ItemStack placeHolder; + + public Class(String name, String colorName, String ID, String itemPlaceHolder) { + this.name = name; + this.ID = ID; + this.placeHolder = new ItemStack(Material.getMaterial(itemPlaceHolder)); + this.placeHolder.getItemMeta().displayName(Component.text(color(colorName))); + } } diff --git a/src/main/java/gq/unurled/raxen/components/player/classes/Classes.java b/src/main/java/gq/unurled/raxen/components/player/classes/Classes.java new file mode 100644 index 0000000..40a2d1e --- /dev/null +++ b/src/main/java/gq/unurled/raxen/components/player/classes/Classes.java @@ -0,0 +1,80 @@ +package gq.unurled.raxen.components.player.classes; + +import gq.unurled.raxen.Raxen; +import gq.unurled.raxen.manager.PlayerManager; +import lombok.Getter; +import lombok.Setter; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; + +import static gq.unurled.raxen.utils.Utils.debug; +import static gq.unurled.raxen.utils.Utils.error; + +public class Classes { + + private final Raxen main; + @Getter + private HashMap classes = new HashMap<>(); + + public Classes(Raxen main) { + this.main = main; + } + + public void register() { + File folder = new File(main.getDataFolder() + "/Class/"); + File[] listFile = folder.listFiles(); + PlayerManager pm = main.getPlayerManager(); + for (int i = 0; i < listFile.length; i++) { + if (listFile[i].isFile()) { + FileConfiguration customClass = new YamlConfiguration(); + try { + customClass.load(listFile[i]); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + resultClass cla = registerClass(customClass); + pm.addClasses(cla.getClas(), cla.getId()); + } else if (listFile[i].isDirectory()) { + for (int a = 0; a < listFile[i].listFiles().length; a++) { + if(listFile[i].listFiles()[a].isFile()) { + FileConfiguration customClass = new YamlConfiguration(); + try { + customClass.load(listFile[i].listFiles()[a]); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + resultClass cla = registerClass(customClass); + pm.addClasses(cla.getClas(), cla.getId()); + } else if (listFile[i].listFiles()[a].isDirectory()) { + error("Can't use more than 2 folder to get Class.yml"); + } + + } + } + } + } + + public class resultClass { + @Getter + @Setter + public Class clas; + @Getter + @Setter + public String id; + public resultClass(Class clas, String id) { + this.clas = clas; + this.id = id; + } + } + + public resultClass registerClass(FileConfiguration file) { + String id = file.getString("id"); + debug(id); + return new resultClass(new Class(file.getString("name"), file.getString("color-name"), id, file.getString("item_placeholder")), id); + } +} diff --git a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java index be220db..2e09aa2 100644 --- a/src/main/java/gq/unurled/raxen/config/PlayerConfig.java +++ b/src/main/java/gq/unurled/raxen/config/PlayerConfig.java @@ -3,9 +3,9 @@ package gq.unurled.raxen.config; import com.mongodb.client.MongoCollection; import com.mongodb.client.model.Filters; import gq.unurled.raxen.Raxen; -import gq.unurled.raxen.components.player.attributes.Attributes; import gq.unurled.raxen.components.player.Inventories; import gq.unurled.raxen.components.player.Storage; +import gq.unurled.raxen.components.player.attributes.Attributes; import gq.unurled.raxen.components.player.storages.EnderChest; import gq.unurled.raxen.manager.PlayerManager; import gq.unurled.raxen.manager.StorageManager; diff --git a/src/main/java/gq/unurled/raxen/listener/entity/SpawnEvent.java b/src/main/java/gq/unurled/raxen/listener/entity/SpawnEvent.java index 8eec818..1247c1c 100644 --- a/src/main/java/gq/unurled/raxen/listener/entity/SpawnEvent.java +++ b/src/main/java/gq/unurled/raxen/listener/entity/SpawnEvent.java @@ -1,8 +1,8 @@ package gq.unurled.raxen.listener.entity; import gq.unurled.raxen.Raxen; -import gq.unurled.raxen.components.entity.EntityUtils; import gq.unurled.raxen.components.entity.EntityNamespacedKey; +import gq.unurled.raxen.components.entity.EntityUtils; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; diff --git a/src/main/java/gq/unurled/raxen/manager/EntityManager.java b/src/main/java/gq/unurled/raxen/manager/EntityManager.java index 3fe4d3c..838a863 100644 --- a/src/main/java/gq/unurled/raxen/manager/EntityManager.java +++ b/src/main/java/gq/unurled/raxen/manager/EntityManager.java @@ -6,7 +6,6 @@ import lombok.Setter; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import java.util.ArrayList; @@ -30,7 +29,7 @@ public class EntityManager { } public void registerEntityFromConfig(FileConfiguration file) { - debug(main, (String) file.get("id")); + debug(file.getString("id")); World world = Bukkit.getWorld(file.getString("world")); String name = file.getString("name"); } diff --git a/src/main/java/gq/unurled/raxen/manager/ItemManager.java b/src/main/java/gq/unurled/raxen/manager/ItemManager.java index e76c5ce..f544625 100644 --- a/src/main/java/gq/unurled/raxen/manager/ItemManager.java +++ b/src/main/java/gq/unurled/raxen/manager/ItemManager.java @@ -100,7 +100,7 @@ public class ItemManager { } registerItem(customItem); } else if (listFile[i].listFiles()[a].isDirectory()) { - error("Cann't use more than 2 folder to get Items.yml"); + error("Can't use more than 2 folder to get Items.yml"); } } @@ -109,7 +109,7 @@ public class ItemManager { } private void registerItem(FileConfiguration file) { - debug(main, (String) file.get("id")); + debug(file.getString("id")); ItemStack it = new ItemStack(Material.getMaterial((String) file.get("id"))); ItemMeta itm = it.getItemMeta(); itm.displayName(Component.text(color((String) file.get("name")))); diff --git a/src/main/java/gq/unurled/raxen/manager/PlayerManager.java b/src/main/java/gq/unurled/raxen/manager/PlayerManager.java index c88ed78..0e5dd48 100644 --- a/src/main/java/gq/unurled/raxen/manager/PlayerManager.java +++ b/src/main/java/gq/unurled/raxen/manager/PlayerManager.java @@ -1,8 +1,9 @@ package gq.unurled.raxen.manager; import gq.unurled.raxen.Raxen; -import gq.unurled.raxen.components.player.attributes.Attribute; import gq.unurled.raxen.components.player.RaxenPlayer; +import gq.unurled.raxen.components.player.attributes.Attribute; +import gq.unurled.raxen.components.player.classes.Class; import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; @@ -15,6 +16,7 @@ public class PlayerManager { private Raxen main; private HashMap actionBar = new HashMap<>(); + private HashMap classes = new HashMap<>(); public PlayerManager(Raxen main) { this.main = main; @@ -49,4 +51,25 @@ public class PlayerManager { public void unRegisterRaxenPlayer(Player player) { } + + public void registerClasses() { + + } + + /** + * getClasses + * @return the classes HashMap + */ + public HashMap getClasses() { + return classes; + } + + /** + * add @param to hashmap of classes + * @param clas a class instance + * @param id the id of the class + */ + public void addClasses(Class clas, String id) { + classes.put(id, clas); + } } diff --git a/src/main/java/gq/unurled/raxen/manager/StorageManager.java b/src/main/java/gq/unurled/raxen/manager/StorageManager.java index fb628b1..e340612 100644 --- a/src/main/java/gq/unurled/raxen/manager/StorageManager.java +++ b/src/main/java/gq/unurled/raxen/manager/StorageManager.java @@ -97,4 +97,49 @@ public class StorageManager { return customConfig; } + public static FileConfiguration createYml(File file) { + + FileConfiguration customConfig; + + if (!file.exists()) { + file.getParentFile().mkdirs(); + try { + file.createNewFile(); + } + catch (IOException e) { + error("Error in Storage Manager saving new File."); + e.printStackTrace(); + } + } + customConfig = new YamlConfiguration(); + try { + customConfig.load(file); + } catch (IOException | InvalidConfigurationException e) { + e.printStackTrace(); + } + return customConfig; + } + + public static FileConfiguration createYml(String path) { + File customFile; + FileConfiguration customConfig; + customFile = new File(path); + if (!customFile.exists()) { + customFile.getParentFile().mkdirs(); + try { + customFile.createNewFile(); + } + catch (IOException e) { + error("Error in Storage Manager saving new File."); + e.printStackTrace(); + } + } + 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/java/gq/unurled/raxen/manager/WorldManager.java b/src/main/java/gq/unurled/raxen/manager/WorldManager.java new file mode 100644 index 0000000..fcfe42f --- /dev/null +++ b/src/main/java/gq/unurled/raxen/manager/WorldManager.java @@ -0,0 +1,75 @@ +package gq.unurled.raxen.manager; + +import gq.unurled.raxen.Raxen; +import lombok.Getter; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.WorldCreator; +import org.bukkit.configuration.file.FileConfiguration; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +public class WorldManager { + + private Raxen main; + private static StorageManager sto; + + @Getter + private HashMap worlds = new HashMap<>(); + + public WorldManager(Raxen main) { + this.main = main; + this.sto = main.getStorageManager(); + if(!(new File(main.getDataFolder() + "/Worlds/").exists())) { + new File(main.getDataFolder() + "/Worlds/").mkdirs(); + } + } + + public void save() { + String path = main.getDataFolder() + "/Worlds/"; + File folder = new File(path); + List worlds = Bukkit.getWorlds(); + for (World world : worlds) { + File file = new File(path + world.getName() + ".yml"); + FileConfiguration fileConf = sto.createYml(file); + fileConf.set("name", world.getName()); + fileConf.set("uuid", world.getUID().toString()); + try { + fileConf.save(file); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public void saveWorld(String name) { + World world = Bukkit.getWorld(name); + UUID uuid = world.getUID(); + String key = world.getKey().getKey(); + File file = new File(main.getDataFolder() + "/Worlds/" + name + ".yml"); + } + + public void load() { + String path = main.getDataFolder() + "/Worlds/"; + File folder = new File(path); + File[] listFile = folder.listFiles(); + for (File file : listFile) { + loadWorld(file); + } + } + + public World loadWorld(File file) { + FileConfiguration fileConf = sto.createYml(file); + World world = Bukkit.createWorld(new WorldCreator(fileConf.getString("name"))); + worlds.put(world.getName(), world); + return world; + } + + public World getWorld(String name) { + return Bukkit.getWorld(name); + } +} diff --git a/src/main/java/gq/unurled/raxen/utils/Items.java b/src/main/java/gq/unurled/raxen/utils/Items.java index 38eb2c4..ff5193e 100644 --- a/src/main/java/gq/unurled/raxen/utils/Items.java +++ b/src/main/java/gq/unurled/raxen/utils/Items.java @@ -1,14 +1,11 @@ package gq.unurled.raxen.utils; import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; import de.tr7zw.nbtapi.NBTItem; -import gq.unurled.raxen.Raxen; import gq.unurled.raxen.components.items.Attributes; import gq.unurled.raxen.components.items.NBT; import net.kyori.adventure.text.Component; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.LivingEntity; import org.bukkit.inventory.*; diff --git a/src/main/java/gq/unurled/raxen/utils/Utils.java b/src/main/java/gq/unurled/raxen/utils/Utils.java index 285700d..e314d64 100644 --- a/src/main/java/gq/unurled/raxen/utils/Utils.java +++ b/src/main/java/gq/unurled/raxen/utils/Utils.java @@ -10,7 +10,6 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; -import java.io.File; import java.util.logging.Logger; public class Utils { diff --git a/src/main/java/gq/unurled/raxen/utils/WorldEdit.java b/src/main/java/gq/unurled/raxen/utils/WorldEdit.java index 3cbaef8..3bf3bcd 100644 --- a/src/main/java/gq/unurled/raxen/utils/WorldEdit.java +++ b/src/main/java/gq/unurled/raxen/utils/WorldEdit.java @@ -1,7 +1,5 @@ package gq.unurled.raxen.utils; -import com.fastasyncworldedit.core.FaweAPI; - public class WorldEdit { } diff --git a/src/main/resources/Class/Swordsmann.yml b/src/main/resources/Class/Swordsmann.yml new file mode 100644 index 0000000..3f0adb9 --- /dev/null +++ b/src/main/resources/Class/Swordsmann.yml @@ -0,0 +1,5 @@ +id: "SWORDSMANN" +name: "Swordsmann" +color-name: "&cSwordsmann" +item_placeholder: "DIAMOND_SWORD" +max_level: 10 diff --git a/src/main/resources/Worlds/example_worlds.yml b/src/main/resources/Worlds/example_worlds.yml new file mode 100644 index 0000000..15b1a6e --- /dev/null +++ b/src/main/resources/Worlds/example_worlds.yml @@ -0,0 +1,2 @@ +name: "HALLO" +uuid: "uuid" \ No newline at end of file