From 6667d6ed94ccbd01b3affef0a20ddbec4bfbe5ab Mon Sep 17 00:00:00 2001 From: Brianna Date: Sun, 25 Aug 2019 19:41:32 -0400 Subject: [PATCH] editor finish --- SongodaCore.iml | 14 ++-- pom.xml | 19 +++-- .../songoda/core/library/settings/Config.java | 11 ++- .../settings/editor/ConfigCategoriesGUI.java | 11 ++- .../settings/editor/ConfigEditorGUI.java | 24 ++++--- .../settings/editor/ConfigListEditorGUI.java | 72 +++++++++++++++++++ .../settings/editor/ConfigSelectionGUI.java | 5 +- 7 files changed, 115 insertions(+), 41 deletions(-) create mode 100644 src/main/java/com/songoda/core/library/settings/editor/ConfigListEditorGUI.java diff --git a/SongodaCore.iml b/SongodaCore.iml index 510a059b..000b875c 100644 --- a/SongodaCore.iml +++ b/SongodaCore.iml @@ -9,24 +9,22 @@ - - - - - - + - - + + + + + diff --git a/pom.xml b/pom.xml index 2cd870d2..607bd5dc 100644 --- a/pom.xml +++ b/pom.xml @@ -23,16 +23,21 @@ private https://repo.songoda.com/artifactory/private/ + spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + sk89q-repo + https://maven.sk89q.com/repo/ + org.spigotmc - spigot-api - 1.14.4-R0.1-SNAPSHOT + spigot + 1.14.4 com.gmail.filoghost.holographicdisplays @@ -57,14 +62,8 @@ net.milkbowl - VaultAPI - 1.7.2 - provided - - - com.googlecode.json-simple - json-simple - 1.1 + vault + 1.7.1 org.slf4j diff --git a/src/main/java/com/songoda/core/library/settings/Config.java b/src/main/java/com/songoda/core/library/settings/Config.java index f57b2ce8..9e1c43e6 100644 --- a/src/main/java/com/songoda/core/library/settings/Config.java +++ b/src/main/java/com/songoda/core/library/settings/Config.java @@ -1,5 +1,6 @@ package com.songoda.core.library.settings; +import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -179,10 +180,9 @@ public class Config { fileConfiguration.addDefault(setting.getCompleteKey(), setting.getDefaultValue()); setting.getCategory().addSetting(setting); } + fileConfiguration.options().copyDefaults(true); } - - fileConfiguration.options().copyDefaults(true); - save(); + this.save(); } public void save() { @@ -305,11 +305,10 @@ public class Config { writer.flush(); writer.close(); - } catch (IOException e) { + fileConfiguration.load(configFile); + } catch (IOException | InvalidConfigurationException e) { e.printStackTrace(); } - - reload(); } public FileConfiguration getFileConfiguration() { diff --git a/src/main/java/com/songoda/core/library/settings/editor/ConfigCategoriesGUI.java b/src/main/java/com/songoda/core/library/settings/editor/ConfigCategoriesGUI.java index 78d2b2b4..b64c917f 100644 --- a/src/main/java/com/songoda/core/library/settings/editor/ConfigCategoriesGUI.java +++ b/src/main/java/com/songoda/core/library/settings/editor/ConfigCategoriesGUI.java @@ -23,21 +23,20 @@ public class ConfigCategoriesGUI extends AbstractGUI { this.plugin = plugin; this.config = config; this.selection = selection; - init("test", 54); + init("Settings Editor", 54); } @Override protected void constructGUI() { createButton(0, LegacyMaterials.getMaterial("OAK_FENCE_GATE").getMaterial(), "Back"); registerClickable(0, ((player1, inventory1, cursor, slot, type) -> - selection.init("test", selection.getInventory().getSize()))); + selection.init("Settings Editor", selection.getInventory().getSize()))); for (int i = 9; i - 9 < config.getCategories().size(); i++) { Category category = config.getCategories().get(i - 9); - createButton(i, Material.STONE, category.getKey()); - registerClickable(i, ((player1, inventory1, cursor, slot, type) -> { - new ConfigEditorGUI(plugin, player, category, null, this); - })); + createButton(i, LegacyMaterials.WRITABLE_BOOK.getMaterial(), "&9&l" + category.getKey()); + registerClickable(i, ((player1, inventory1, cursor, slot, type) -> + new ConfigEditorGUI(plugin, player, category, null, this))); } } diff --git a/src/main/java/com/songoda/core/library/settings/editor/ConfigEditorGUI.java b/src/main/java/com/songoda/core/library/settings/editor/ConfigEditorGUI.java index 7276d89c..a855ba55 100644 --- a/src/main/java/com/songoda/core/library/settings/editor/ConfigEditorGUI.java +++ b/src/main/java/com/songoda/core/library/settings/editor/ConfigEditorGUI.java @@ -28,7 +28,7 @@ public class ConfigEditorGUI extends AbstractGUI { this.narrow = narrow; this.narrowed = narrowed; this.categories = categories; - init("test", 54); + init("Settings Editor", 54); } @Override @@ -37,7 +37,7 @@ public class ConfigEditorGUI extends AbstractGUI { createButton(0, LegacyMaterials.getMaterial("OAK_FENCE_GATE").getMaterial(), "Back"); registerClickable(0, ((player1, inventory1, cursor, slot, type) -> - categories.init("test", categories.getInventory().getSize()))); + categories.init("Settings Editor", categories.getInventory().getSize()))); List ran = new ArrayList<>(); int j = 9; @@ -48,7 +48,7 @@ public class ConfigEditorGUI extends AbstractGUI { if (!ran.contains(key)) { if (canNarrow) { - createButton(j, Material.STONE, key); + createButton(j, LegacyMaterials.BOOK.getMaterial(), "&9&l" + key); registerClickable(j, ((player1, inventory1, cursor, slot, type) -> new ConfigEditorGUI(plugin, player1, narrow.narrow(key), key, categories))); } else { @@ -59,14 +59,14 @@ public class ConfigEditorGUI extends AbstractGUI { StringBuilder value = new StringBuilder("&a"); if (config.isString(setting.getCompleteKey())) { value.append(setting.getString()); - material = LegacyMaterials.getMaterial("PAPER").getMaterial(); + material = LegacyMaterials.PAPER.getMaterial(); registerClickable(j, ((player1, inventory1, cursor, slot, type) -> { ChatPrompt prompt = ChatPrompt.showPrompt(plugin, player, "Enter your new value.", event -> config.set(setting.getCompleteKey(), event.getMessage().trim())); - prompt.setOnClose(() -> init("test", inventory.getSize())); + prompt.setOnClose(() -> init("Settings Editor", inventory.getSize())); })); } else if (isNumber(setting)) { - material = LegacyMaterials.getMaterial("CLOCK").getMaterial(); + material = LegacyMaterials.CLOCK.getMaterial(); registerClickable(j, ((player1, inventory1, cursor, slot, type) -> { ChatPrompt prompt = ChatPrompt.showPrompt(plugin, player, "Enter your new value.", event -> { if (config.isInt(setting.getCompleteKey())) { @@ -77,7 +77,7 @@ public class ConfigEditorGUI extends AbstractGUI { config.set(setting.getCompleteKey(), Long.parseLong(event.getMessage().trim())); } }); - prompt.setOnClose(() -> init("test", inventory.getSize())); + prompt.setOnClose(() -> init("Settings Editor", inventory.getSize())); })); if (config.isInt(setting.getCompleteKey())) { value.append(setting.getInt()); @@ -88,18 +88,24 @@ public class ConfigEditorGUI extends AbstractGUI { } } else if (config.isBoolean(setting.getCompleteKey())) { value.append(setting.getBoolean()); - material = LegacyMaterials.getMaterial("LEVER").getMaterial(); + material = LegacyMaterials.LEVER.getMaterial(); registerClickable(j, ((player1, inventory1, cursor, slot, type) -> { config.set(setting.getCompleteKey(), !setting.getBoolean()); constructGUI(); })); + } else if (config.isList(setting.getCompleteKey())) { + value.append(setting.getStringList()); + material = LegacyMaterials.WRITABLE_BOOK.getMaterial(); + registerClickable(j, ((player1, inventory1, cursor, slot, type) -> { + new ConfigListEditorGUI(plugin, player, setting, this); + })); } else { value.append("&cPreview Failed"); } list.add(value.toString()); list.addAll(Arrays.asList(setting.getComments())); - createButton(j, material, key, list); + createButton(j, material, "&c&l" + key, list); } ran.add(key); j++; diff --git a/src/main/java/com/songoda/core/library/settings/editor/ConfigListEditorGUI.java b/src/main/java/com/songoda/core/library/settings/editor/ConfigListEditorGUI.java new file mode 100644 index 00000000..d977ad85 --- /dev/null +++ b/src/main/java/com/songoda/core/library/settings/editor/ConfigListEditorGUI.java @@ -0,0 +1,72 @@ +package com.songoda.core.library.settings.editor; + +import com.songoda.core.input.ChatPrompt; +import com.songoda.core.library.compatibility.LegacyMaterials; +import com.songoda.core.library.settings.Setting; +import com.songoda.core.utils.gui.AbstractGUI; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.List; + +public class ConfigListEditorGUI extends AbstractGUI { + + private final JavaPlugin plugin; + private final Setting setting; + private final ConfigEditorGUI editor; + + private final List stringList; + + public ConfigListEditorGUI(JavaPlugin plugin, Player player, Setting setting, ConfigEditorGUI editor) { + super(player); + this.plugin = plugin; + this.setting = setting; + this.stringList = setting.getStringList(); + this.editor = editor; + init("Settings Editor", 54); + } + + @Override + protected void constructGUI() { + resetClickables(); + inventory.clear(); + for (int i = 0; i < stringList.size(); i++) { + int j = i; + String item = stringList.get(i); + createButton(i, LegacyMaterials.PAPER.getMaterial(), "&7" + item, "&cClick to remove."); + registerClickable(i, ((player1, inventory1, cursor, slot, type) -> { + stringList.remove(j); + constructGUI(); + })); + } + createButton(45, LegacyMaterials.LAVA_BUCKET.getMaterial(), "&cDiscard Changes"); + registerClickable(45, ((player1, inventory1, cursor, slot, type) -> { + editor.init("Settings Editor", editor.getInventory().getSize()); + })); + + createButton(49, LegacyMaterials.CHEST.getMaterial(), "&9Add Item"); + registerClickable(49, ((player1, inventory1, cursor, slot, type) -> { + ChatPrompt prompt = ChatPrompt.showPrompt(plugin, player, "Enter your value.", event -> + stringList.add(event.getMessage().trim())); + prompt.setOnClose(() -> init("Settings Editor", inventory.getSize())); + })); + + createButton(53, LegacyMaterials.REDSTONE.getMaterial(), "&aSave"); + registerClickable(53, ((player1, inventory1, cursor, slot, type) -> { + setting.getConfig().set(setting.getCompleteKey(), stringList); + editor.init("Settings Editor", editor.getInventory().getSize()); + })); + } + + @Override + protected void registerClickables() { + + } + + @Override + protected void registerOnCloses() { + + } + +} diff --git a/src/main/java/com/songoda/core/library/settings/editor/ConfigSelectionGUI.java b/src/main/java/com/songoda/core/library/settings/editor/ConfigSelectionGUI.java index 8ce666e5..0b76bf33 100644 --- a/src/main/java/com/songoda/core/library/settings/editor/ConfigSelectionGUI.java +++ b/src/main/java/com/songoda/core/library/settings/editor/ConfigSelectionGUI.java @@ -1,5 +1,6 @@ package com.songoda.core.library.settings.editor; +import com.songoda.core.library.compatibility.LegacyMaterials; import com.songoda.core.library.settings.Config; import com.songoda.core.utils.gui.AbstractGUI; import org.bukkit.Material; @@ -20,14 +21,14 @@ public class ConfigSelectionGUI extends AbstractGUI { super(player); this.plugin = plugin; this.configs.addAll(Arrays.asList(configs)); - init("test", 54); + init("Settings Editor", 9); } @Override protected void constructGUI() { for (int i = 0; i < configs.size(); i++) { Config config = configs.get(i); - createButton(i, Material.STONE, config.getConfigName()); + createButton(i, LegacyMaterials.WRITABLE_BOOK.getMaterial(), "&9&l" + config.getConfigName()); registerClickable(i, ((player1, inventory1, cursor, slot, type) -> new ConfigCategoriesGUI(plugin, player, config, this))); }