From 950851584afce1428dfab746be40117d11d45525 Mon Sep 17 00:00:00 2001 From: AMinecraftDev Date: Sun, 3 Jun 2018 22:24:21 +0800 Subject: [PATCH] 3.0.0-SNAPSHOT-U10 Completed the ItemStack handling system --- .idea/compiler.xml | 1 - .idea/libraries/Maven__junit_junit_4_12.xml | 13 ----- .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 ----- .idea/misc.xml | 5 ++ .idea/modules.xml | 1 - api-modules/PluginAPI/PluginAPI.iml | 35 ------------ api-modules/PluginAPI/pom.xml | 24 --------- .../custombosses/utils/StringTest.java | 41 -------------- plugin-modules/Core/Core.iml | 1 - plugin-modules/Core/pom.xml | 6 --- .../custombosses/CustomBosses.java | 13 ++++- .../managers/ItemStackManager.java | 53 +++++++++++++++++++ .../custombosses/utils/file/IFileHandler.java | 6 +-- .../utils/itemstack/ItemStackConverter.java | 1 - .../utils/itemstack/ItemStackFileHandler.java | 28 +++++++++- pom.xml | 3 +- 16 files changed, 99 insertions(+), 145 deletions(-) delete mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml delete mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml delete mode 100644 api-modules/PluginAPI/PluginAPI.iml delete mode 100644 api-modules/PluginAPI/pom.xml delete mode 100644 api-modules/PluginAPI/test/net/aminecraftdev/custombosses/utils/StringTest.java create mode 100644 plugin-modules/Core/src/net/aminecraftdev/custombosses/managers/ItemStackManager.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index d76a3ce..03b9f0c 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -13,7 +13,6 @@ - diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml deleted file mode 100644 index d411041..0000000 --- a/.idea/libraries/Maven__junit_junit_4_12.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml deleted file mode 100644 index f58bbc1..0000000 --- a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index e8942bd..1374a73 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,6 +6,11 @@ + diff --git a/.idea/modules.xml b/.idea/modules.xml index 9315cdf..f66285c 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -8,7 +8,6 @@ - diff --git a/api-modules/PluginAPI/PluginAPI.iml b/api-modules/PluginAPI/PluginAPI.iml deleted file mode 100644 index 9acc45a..0000000 --- a/api-modules/PluginAPI/PluginAPI.iml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api-modules/PluginAPI/pom.xml b/api-modules/PluginAPI/pom.xml deleted file mode 100644 index 24e3081..0000000 --- a/api-modules/PluginAPI/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - CustomBosses - net.aminecraftdev.custombosses - 3.0.0.0 - ../../pom.xml - - 4.0.0 - - PluginAPI - jar - - - - junit - junit - 4.12 - test - - - \ No newline at end of file diff --git a/api-modules/PluginAPI/test/net/aminecraftdev/custombosses/utils/StringTest.java b/api-modules/PluginAPI/test/net/aminecraftdev/custombosses/utils/StringTest.java deleted file mode 100644 index 03aac90..0000000 --- a/api-modules/PluginAPI/test/net/aminecraftdev/custombosses/utils/StringTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.aminecraftdev.custombosses.utils; - -import org.junit.Test; - -import java.util.*; - -/** - * @author Charles Cullen - * @version 1.0.0 - * @since 03-Jun-18 - */ -public class StringTest { - - @Test - public void testReplaceList() { - List list = new ArrayList<>(Arrays.asList("abcd {0}", "efg {1}", "hij {2}")); - Map replaceMap = new HashMap<>(); - - replaceMap.put("{0}", "123"); - replaceMap.put("{1}", "456"); - replaceMap.put("{2}", "789"); - - System.out.println(list); - list.replaceAll(s -> replaceString(s, replaceMap)); - System.out.println(list); - } - - private String replaceString(String input, Map replaceMap) { - if(replaceMap == null) return input; - - for(String replaceKey : replaceMap.keySet()) { - if(input.contains(replaceKey)) { - input = input.replace(replaceKey, replaceMap.get(replaceKey)); - } - } - - return input; - } - - -} diff --git a/plugin-modules/Core/Core.iml b/plugin-modules/Core/Core.iml index 070aa46..cb0c8c5 100644 --- a/plugin-modules/Core/Core.iml +++ b/plugin-modules/Core/Core.iml @@ -12,7 +12,6 @@ - diff --git a/plugin-modules/Core/pom.xml b/plugin-modules/Core/pom.xml index 0c79e21..292c145 100644 --- a/plugin-modules/Core/pom.xml +++ b/plugin-modules/Core/pom.xml @@ -14,12 +14,6 @@ jar - - ${project.groupId} - PluginAPI - ${project.version} - compile - ${project.groupId} FactionHelper diff --git a/plugin-modules/Core/src/net/aminecraftdev/custombosses/CustomBosses.java b/plugin-modules/Core/src/net/aminecraftdev/custombosses/CustomBosses.java index d2c32c7..a6ff036 100644 --- a/plugin-modules/Core/src/net/aminecraftdev/custombosses/CustomBosses.java +++ b/plugin-modules/Core/src/net/aminecraftdev/custombosses/CustomBosses.java @@ -1,5 +1,8 @@ package net.aminecraftdev.custombosses; +import lombok.Getter; +import net.aminecraftdev.custombosses.managers.ItemStackManager; +import net.aminecraftdev.custombosses.utils.IReloadable; import org.bukkit.plugin.java.JavaPlugin; /** @@ -7,12 +10,20 @@ import org.bukkit.plugin.java.JavaPlugin; * @version 1.0.0 * @since 06-Sep-17 */ -public class CustomBosses extends JavaPlugin { +public class CustomBosses extends JavaPlugin implements IReloadable { + + @Getter private ItemStackManager itemStackManager; @Override public void onEnable() { + this.itemStackManager = new ItemStackManager(this); + reload(); } + @Override + public void reload() { + this.itemStackManager.reload(); + } } diff --git a/plugin-modules/Core/src/net/aminecraftdev/custombosses/managers/ItemStackManager.java b/plugin-modules/Core/src/net/aminecraftdev/custombosses/managers/ItemStackManager.java new file mode 100644 index 0000000..39488d5 --- /dev/null +++ b/plugin-modules/Core/src/net/aminecraftdev/custombosses/managers/ItemStackManager.java @@ -0,0 +1,53 @@ +package net.aminecraftdev.custombosses.managers; + +import lombok.Getter; +import net.aminecraftdev.custombosses.utils.ILoadable; +import net.aminecraftdev.custombosses.utils.IReloadable; +import net.aminecraftdev.custombosses.utils.ISavable; +import net.aminecraftdev.custombosses.utils.itemstack.ItemStackConverter; +import net.aminecraftdev.custombosses.utils.itemstack.ItemStackFileHandler; +import net.aminecraftdev.custombosses.utils.itemstack.holder.ItemStackHolder; +import org.bukkit.plugin.java.JavaPlugin; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Charles Cullen + * @version 1.0.0 + * @since 03-Jun-18 + */ +public class ItemStackManager implements ILoadable, ISavable, IReloadable { + + @Getter private final ItemStackConverter itemStackConverter = new ItemStackConverter(); + + private Map itemStackHolders = new HashMap<>(); + private ItemStackFileHandler itemStackFileHandler; + + public ItemStackManager(JavaPlugin javaPlugin) { + File file = new File(javaPlugin.getDataFolder(), "items.json"); + + this.itemStackFileHandler = new ItemStackFileHandler(javaPlugin, file, true); + } + + @Override + public void load() { + this.itemStackHolders = this.itemStackFileHandler.loadFile(); + } + + @Override + public void reload() { + load(); + } + + @Override + public void save() { + this.itemStackFileHandler.saveFile(this.itemStackHolders); + } + + public ItemStackHolder getItemStackHolder(String name) { + return this.itemStackHolders.getOrDefault(name, null); + } + +} diff --git a/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/file/IFileHandler.java b/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/file/IFileHandler.java index e7fa4a7..e395d4c 100644 --- a/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/file/IFileHandler.java +++ b/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/file/IFileHandler.java @@ -1,7 +1,5 @@ package net.aminecraftdev.custombosses.utils.file; -import java.io.File; - /** * @author Charles Cullen * @version 1.0.0 @@ -9,8 +7,8 @@ import java.io.File; */ public interface IFileHandler { - ReturnObject loadFile(File file); + ReturnObject loadFile(); - void saveFile(File file, ReturnObject returnObject); + void saveFile(ReturnObject returnObject); } diff --git a/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackConverter.java b/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackConverter.java index 81fb455..ab2facd 100644 --- a/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackConverter.java +++ b/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackConverter.java @@ -1,6 +1,5 @@ package net.aminecraftdev.custombosses.utils.itemstack; -import net.aminecraftdev.custombosses.utils.IConverter; import net.aminecraftdev.custombosses.utils.IReplaceableConverter; import net.aminecraftdev.custombosses.utils.StringUtils; import net.aminecraftdev.custombosses.utils.factory.NbtFactory; diff --git a/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackFileHandler.java b/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackFileHandler.java index 40f566a..d153aa9 100644 --- a/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackFileHandler.java +++ b/plugin-modules/Core/src/net/aminecraftdev/custombosses/utils/itemstack/ItemStackFileHandler.java @@ -4,8 +4,10 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import net.aminecraftdev.custombosses.utils.file.FileUtils; import net.aminecraftdev.custombosses.utils.file.IFileHandler; import net.aminecraftdev.custombosses.utils.itemstack.holder.ItemStackHolder; +import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.FileReader; @@ -27,10 +29,32 @@ public class ItemStackFileHandler implements IFileHandler loadFile(File file) { + public Map loadFile() { Map itemStackHolderMap = new HashMap<>(); + if(!this.file.exists()) { + if(this.saveResource) { + String path = this.file.getName(); + + if(this.javaPlugin.getResource(path) != null) { + this.javaPlugin.saveResource(path, false); + } + } else { + FileUtils.get().createFile(this.file); + } + } + try { FileReader fileReader = new FileReader(file); JsonObject jsonObject = GSON.fromJson(fileReader, JsonObject.class); @@ -53,7 +77,7 @@ public class ItemStackFileHandler implements IFileHandler map) { + public void saveFile(Map map) { try { FileWriter fileWriter = new FileWriter(file); Type type = new TypeToken>(){}.getType(); diff --git a/pom.xml b/pom.xml index 07d1a54..86f0638 100644 --- a/pom.xml +++ b/pom.xml @@ -13,14 +13,13 @@ api-modules/FactionsM api-modules/FactionsOne api-modules/FactionsUUID - api-modules/PluginAPI api-modules/LegacyFactions plugin-modules/Core plugin-modules/FactionHelper - 3.0.0-SNAPSHOT-U9 + 3.0.0-SNAPSHOT-U10 CustomBosses net.aminecraftdev.custombosses.CustomBosses AMinecraftDev