From a674edc187e5c3b06c9c2ce09eb0058c9830825c Mon Sep 17 00:00:00 2001 From: aro Date: Wed, 11 Jan 2023 18:13:19 +0100 Subject: [PATCH] feat: seperate menu for appearance management --- .../artelnatif/nicko/gui/AppearanceGUI.java | 38 +++++++++++++++++++ .../net/artelnatif/nicko/gui/MainGUI.java | 16 ++++---- .../nicko/gui/items/main/AdminItem.java | 2 +- .../nicko/gui/items/main/SkinItem.java | 29 ++++++++++++++ .../{main => skin}/ChangeNameAndSkinItem.java | 2 +- .../items/{main => skin}/ChangeNameItem.java | 2 +- .../items/{main => skin}/ChangeSkinItem.java | 2 +- .../java/net/artelnatif/nicko/i18n/I18N.java | 2 +- .../nicko/i18n/LocaleFileManager.java | 4 +- 9 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceGUI.java create mode 100644 nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SkinItem.java rename nicko-core/src/main/java/net/artelnatif/nicko/gui/items/{main => skin}/ChangeNameAndSkinItem.java (96%) rename nicko-core/src/main/java/net/artelnatif/nicko/gui/items/{main => skin}/ChangeNameItem.java (95%) rename nicko-core/src/main/java/net/artelnatif/nicko/gui/items/{main => skin}/ChangeSkinItem.java (95%) diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceGUI.java new file mode 100644 index 0000000..c1bc1e5 --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceGUI.java @@ -0,0 +1,38 @@ +package net.artelnatif.nicko.gui; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.builder.guitype.GUIType; +import de.studiocode.invui.gui.structure.Structure; +import de.studiocode.invui.window.impl.single.SimpleWindow; +import net.artelnatif.nicko.gui.items.common.BackItem; +import net.artelnatif.nicko.gui.items.skin.ChangeNameAndSkinItem; +import net.artelnatif.nicko.gui.items.skin.ChangeNameItem; +import net.artelnatif.nicko.gui.items.skin.ChangeSkinItem; +import org.bukkit.entity.Player; + +public class AppearanceGUI { + private final Player player; + private final GUI gui; + private final String[] structureIngredients = new String[]{ + "# # # # # # # # #", + "# % % % % % % % #", + "# % # N A S # % #", + "# % % % % % % % #", + "B # # # # # # # #"}; + + public AppearanceGUI(Player player) { + this.gui = new GUIBuilder<>(GUIType.NORMAL) + .setStructure(new Structure(structureIngredients)) + .addIngredient('N', new ChangeNameItem()) + .addIngredient('A', new ChangeNameAndSkinItem()) + .addIngredient('S', new ChangeSkinItem()) + .addIngredient('B', new BackItem(new MainGUI(player).getGUI())) + .build(); + this.player = player; + } + + public void open() { + new SimpleWindow(player, "Nicko", gui).show(); + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java index b1b4b4e..131be0e 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java @@ -5,7 +5,10 @@ import de.studiocode.invui.gui.builder.GUIBuilder; import de.studiocode.invui.gui.builder.guitype.GUIType; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.window.impl.single.SimpleWindow; -import net.artelnatif.nicko.gui.items.main.*; +import net.artelnatif.nicko.gui.items.main.AdminItem; +import net.artelnatif.nicko.gui.items.main.ResetItem; +import net.artelnatif.nicko.gui.items.main.SettingsItem; +import net.artelnatif.nicko.gui.items.main.SkinItem; import org.bukkit.entity.Player; public class MainGUI { @@ -14,10 +17,9 @@ public class MainGUI { private final String[] structureIngredients = new String[]{ "# # # # # # # # #", "# % % % % % % % #", - "# % # R B P # % #", - "# % # N A S # % #", + "# % # R S P # % #", "# % % % % % % % #", - "E # # # # # # # #"}; + "E A # # # # # # #"}; public MainGUI(Player player) { if (!player.hasPermission("nicko.admin") || !player.isOp()) { @@ -26,12 +28,10 @@ public class MainGUI { this.gui = new GUIBuilder<>(GUIType.NORMAL) .setStructure(new Structure(structureIngredients)) - .addIngredient('N', new ChangeNameItem()) - .addIngredient('S', new ChangeSkinItem()) + .addIngredient('R', new ResetItem()) + .addIngredient('S', new SkinItem()) .addIngredient('P', new SettingsItem()) .addIngredient('A', new AdminItem()) - .addIngredient('B', new ChangeNameAndSkinItem()) - .addIngredient('R', new ResetItem()) .build(); this.player = player; } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AdminItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AdminItem.java index 193e11c..011e7dd 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AdminItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AdminItem.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; public class AdminItem extends BaseItem { @Override public ItemProvider getItemProvider() { - final ItemBuilder builder = new ItemBuilder(Material.PISTON); + final ItemBuilder builder = new ItemBuilder(Material.REDSTONE_TORCH); builder.setDisplayName("§cAdministration panel..."); builder.addLoreLines("§7Access the administration panel."); return builder; diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SkinItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SkinItem.java new file mode 100644 index 0000000..21374ab --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SkinItem.java @@ -0,0 +1,29 @@ +package net.artelnatif.nicko.gui.items.main; + +import de.studiocode.invui.item.ItemProvider; +import de.studiocode.invui.item.builder.ItemBuilder; +import de.studiocode.invui.item.impl.BaseItem; +import net.artelnatif.nicko.gui.AppearanceGUI; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.jetbrains.annotations.NotNull; + +public class SkinItem extends BaseItem { + @Override + public ItemProvider getItemProvider() { + final ItemBuilder builder = new ItemBuilder(Material.ENDER_EYE); + builder.setDisplayName("§fManage §6appearance§f..."); + builder.addLoreLines("§7Access the appearance manager."); + return builder; + } + + @Override + public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { + if (clickType.isLeftClick() || clickType.isRightClick()) { + event.getView().close(); + new AppearanceGUI(player).open(); + } + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeNameAndSkinItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkinItem.java similarity index 96% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeNameAndSkinItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkinItem.java index 833531a..1a8d128 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeNameAndSkinItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkinItem.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.items.main; +package net.artelnatif.nicko.gui.items.skin; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.builder.ItemBuilder; diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeNameItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameItem.java similarity index 95% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeNameItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameItem.java index 32cd957..efb2c41 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeNameItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameItem.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.items.main; +package net.artelnatif.nicko.gui.items.skin; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.builder.ItemBuilder; diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeSkinItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkinItem.java similarity index 95% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeSkinItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkinItem.java index b517c4e..85ff494 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ChangeSkinItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkinItem.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.items.main; +package net.artelnatif.nicko.gui.items.skin; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.builder.ItemBuilder; diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java index 98d473f..69a2aed 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java @@ -53,7 +53,7 @@ public class I18N { if (locale == Locale.CUSTOM) { translation = instance.getLocaleFileManager().getFromFile(key.key()); } else { - final HashMap values = yaml.load(I18N.class.getResourceAsStream(locale.getCode() + ".yml")); + final HashMap values = yaml.load(instance.getResource(locale.getCode() + ".yml")); translation = values.getOrDefault(key.key(), key.key()); } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java index 12330bb..dc2e396 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleFileManager.java @@ -14,7 +14,7 @@ public class LocaleFileManager { private HashMap data = new HashMap<>(); public boolean loadValues() { - if (!file.exists()) return false; + if (!file.exists()) return true; try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file))) { data = yaml.load(inputStream); return true; @@ -31,7 +31,7 @@ public class LocaleFileManager { public boolean dumpFromLocale(Locale locale) { if (locale == Locale.CUSTOM) return true; if (file.exists()) return true; - final HashMap values = yaml.load(this.getClass().getResourceAsStream(locale.getCode() + ".yml")); + final HashMap values = yaml.load(this.getClass().getClassLoader().getResourceAsStream(locale.getCode() + ".yml")); try { if (file.createNewFile()) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {