From 6f1391c6cf08ec80ff12e387c8bb4d739c5b7995 Mon Sep 17 00:00:00 2001 From: ineanto Date: Sat, 1 Apr 2023 13:51:19 +0200 Subject: [PATCH] feat: improved gui based on feedback --- .../net/artelnatif/nicko/NickoBukkit.java | 2 ++ .../net/artelnatif/nicko/gui/AdminGUI.java | 6 ++-- .../nicko/gui/AppearanceManagerGUI.java | 35 ------------------- .../net/artelnatif/nicko/gui/MainGUI.java | 18 +++++----- .../net/artelnatif/nicko/gui/SettingsGUI.java | 8 ++--- .../nicko/gui/admin/CacheManagementGUI.java | 4 ++- ...etailledGUI.java => CacheDetailedGUI.java} | 15 ++++---- .../gui/items/admin/cache/CacheDetailed.java | 4 +-- .../nicko/gui/items/common/GoBack.java | 1 + .../OptionUnavailable.java | 7 ++-- .../items/main/AppearanceManagerSubGUI.java | 26 -------------- .../nicko/gui/items/skin/ChangeName.java | 2 +- .../gui/items/skin/ChangeNameAndSkin.java | 2 +- .../nicko/gui/items/skin/ChangeSkin.java | 10 +++--- 14 files changed, 45 insertions(+), 95 deletions(-) delete mode 100644 core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java rename core/src/main/java/net/artelnatif/nicko/gui/admin/cache/{CacheDetailledGUI.java => CacheDetailedGUI.java} (85%) rename core/src/main/java/net/artelnatif/nicko/gui/items/{settings => common}/OptionUnavailable.java (60%) delete mode 100644 core/src/main/java/net/artelnatif/nicko/gui/items/main/AppearanceManagerSubGUI.java diff --git a/core/src/main/java/net/artelnatif/nicko/NickoBukkit.java b/core/src/main/java/net/artelnatif/nicko/NickoBukkit.java index 16554ce..b5cc0ec 100644 --- a/core/src/main/java/net/artelnatif/nicko/NickoBukkit.java +++ b/core/src/main/java/net/artelnatif/nicko/NickoBukkit.java @@ -1,5 +1,6 @@ package net.artelnatif.nicko; +import net.artelnatif.nicko.gui.items.common.OptionUnavailable; import xyz.xenondevs.invui.gui.structure.Structure; import xyz.xenondevs.invui.item.builder.ItemBuilder; import xyz.xenondevs.invui.item.impl.SimpleItem; @@ -101,6 +102,7 @@ public class NickoBukkit extends JavaPlugin { Structure.addGlobalIngredient('#', new SimpleItem(new ItemBuilder(Material.BLACK_STAINED_GLASS_PANE).setDisplayName(" "))); Structure.addGlobalIngredient('%', new SimpleItem(new ItemBuilder(Material.ORANGE_STAINED_GLASS_PANE).setDisplayName(" "))); + Structure.addGlobalIngredient('U', new OptionUnavailable()); Structure.addGlobalIngredient('E', new ExitGUI()); new PlaceHolderHook(this).hook(); diff --git a/core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java index cdfc4be..6baa5a7 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java @@ -7,6 +7,8 @@ import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; public class AdminGUI { + public static final String TITLE = "Nicko > Administration"; + private final Player player; private final Gui gui; @@ -14,7 +16,7 @@ public class AdminGUI { this.gui = Gui.normal() .setStructure( "# # # # # # # # #", - "# % % X X S % % #", + "# # # S U U # # #", "B # # # # # # # #" ) .addIngredient('S', new ManageCache()) @@ -28,6 +30,6 @@ public class AdminGUI { } public void open() { - Window.single().setGui(gui).setTitle("Nicko").open(player); + Window.single().setGui(gui).setTitle(TITLE).open(player); } } diff --git a/core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java deleted file mode 100644 index bba1055..0000000 --- a/core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.artelnatif.nicko.gui; - -import net.artelnatif.nicko.gui.items.common.GoBack; -import net.artelnatif.nicko.gui.items.skin.ChangeName; -import net.artelnatif.nicko.gui.items.skin.ChangeNameAndSkin; -import net.artelnatif.nicko.gui.items.skin.ChangeSkin; -import org.bukkit.entity.Player; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.window.Window; - -public class AppearanceManagerGUI { - private final Player player; - private final Gui gui; - - public AppearanceManagerGUI(Player player) { - this.gui = Gui.normal() - .setStructure( - "# # # # # # # # #", - "# % % % % % % % #", - "# % # N A S # % #", - "# % % % % % % % #", - "B # # # # # # # #" - ) - .addIngredient('N', new ChangeName()) - .addIngredient('A', new ChangeNameAndSkin()) - .addIngredient('S', new ChangeSkin()) - .addIngredient('B', new GoBack(new MainGUI(player).getGUI())) - .build(); - this.player = player; - } - - public void open() { - Window.single().setGui(gui).setTitle("Nicko").open(player); - } -} diff --git a/core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java index 8e66292..e8afe54 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/MainGUI.java @@ -1,9 +1,11 @@ package net.artelnatif.nicko.gui; import net.artelnatif.nicko.gui.items.main.AdminSubGUI; -import net.artelnatif.nicko.gui.items.main.AppearanceManagerSubGUI; import net.artelnatif.nicko.gui.items.main.ResetAppearance; import net.artelnatif.nicko.gui.items.main.SettingsSubGUI; +import net.artelnatif.nicko.gui.items.skin.ChangeName; +import net.artelnatif.nicko.gui.items.skin.ChangeNameAndSkin; +import net.artelnatif.nicko.gui.items.skin.ChangeSkin; import org.bukkit.entity.Player; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; @@ -15,19 +17,19 @@ public class MainGUI { public MainGUI(Player player) { final String[] dynamicStructure = new String[]{ "# # # # # # # # #", - "# % % % A % % % #", - "# % # R S P # % #", - "# % % % % % % % #", - "E # # # # # # # #"}; + "# # # N B S # # #", + "E P A # # # # # R"}; if (!player.hasPermission("nicko.admin") || !player.isOp()) { - dynamicStructure[3] = dynamicStructure[3].replace("A", "#"); + dynamicStructure[2] = dynamicStructure[2].replace("A", "#"); } this.gui = Gui.normal() .setStructure(dynamicStructure) .addIngredient('R', new ResetAppearance()) - .addIngredient('S', new AppearanceManagerSubGUI()) + .addIngredient('N', new ChangeName()) + .addIngredient('B', new ChangeNameAndSkin()) + .addIngredient('S', new ChangeSkin(player)) .addIngredient('P', new SettingsSubGUI()) .addIngredient('A', new AdminSubGUI()) .build(); @@ -39,6 +41,6 @@ public class MainGUI { } public void open() { - Window.single().setGui(gui).setTitle("Nicko").open(player); + Window.single().setGui(gui).setTitle("Nicko - Home").open(player); } } diff --git a/core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java index 6e302bf..eef7069 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java @@ -3,19 +3,20 @@ package net.artelnatif.nicko.gui; import net.artelnatif.nicko.gui.items.common.GoBack; import net.artelnatif.nicko.gui.items.settings.BungeeCordCycling; import net.artelnatif.nicko.gui.items.settings.LanguageCycling; -import net.artelnatif.nicko.gui.items.settings.OptionUnavailable; import org.bukkit.entity.Player; import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; public class SettingsGUI { + public static final String TITLE = "Nicko > Settings"; + private final Player player; private final Gui gui; public SettingsGUI(Player player) { final String[] dynamicStructure = new String[]{ "# # # # # # # # #", - "# % % L U T % % #", + "# # # L T U # # #", "B # # # # # # # #" }; @@ -27,12 +28,11 @@ public class SettingsGUI { .addIngredient('B', new GoBack(new MainGUI(player).getGUI())) .addIngredient('L', new LanguageCycling().get(player)) .addIngredient('T', new BungeeCordCycling().get(player)) - .addIngredient('U', new OptionUnavailable()) .build(); this.player = player; } public void open() { - Window.single().setGui(gui).setTitle("Nicko").open(player); + Window.single().setGui(gui).setTitle(TITLE).open(player); } } diff --git a/core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java index 549d230..196ad40 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java @@ -10,6 +10,8 @@ import xyz.xenondevs.invui.gui.Gui; import xyz.xenondevs.invui.window.Window; public class CacheManagementGUI { + public static final String TITLE = "Nicko > Admin... > Cache"; + private final Player player; private final Gui gui; @@ -29,6 +31,6 @@ public class CacheManagementGUI { } public void open() { - Window.single().setGui(gui).setTitle("Nicko").open(player); + Window.single().setGui(gui).setTitle(TITLE).open(player); } } diff --git a/core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailledGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailedGUI.java similarity index 85% rename from core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailledGUI.java rename to core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailedGUI.java index f233a3a..c02134c 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailledGUI.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailedGUI.java @@ -20,11 +20,13 @@ import java.util.Optional; import java.util.concurrent.ConcurrentMap; import java.util.stream.Collectors; -public class CacheDetailledGUI { +public class CacheDetailedGUI { + public static final String TITLE = "... > Cache > Invalidate"; + private final Player player; private final Gui gui; - public CacheDetailledGUI(Player player) { + public CacheDetailedGUI(Player player) { final ConcurrentMap> skins = NickoBukkit.getInstance().getMojangAPI().getCache().asMap(); final List loadedSkins = skins.entrySet().stream() .filter(entry -> entry.getValue().isPresent()) @@ -36,12 +38,13 @@ public class CacheDetailledGUI { .collect(Collectors.toList()); gui = ScrollGui.items(guiItemBuilder -> { - guiItemBuilder.setStructure("% # # # # # # # %", + guiItemBuilder.setStructure( + "# # # # # # # # #", "# x x x x x x U #", "# x x x x x x # #", - "# x x x x x x D #", "# x x x x x x # #", - "B # # # # # # # %"); + "# x x x x x x D #", + "B # # # # # # # #"); guiItemBuilder.addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL); guiItemBuilder.addIngredient('U', new ScrollUp()); guiItemBuilder.addIngredient('D', new ScrollDown()); @@ -53,6 +56,6 @@ public class CacheDetailledGUI { } public void open() { - Window.single().setGui(gui).setTitle("Nicko").open(player); + Window.single().setGui(gui).setTitle(TITLE).open(player); } } diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java b/core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java index 48e1eca..830a859 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java @@ -1,6 +1,6 @@ package net.artelnatif.nicko.gui.items.admin.cache; -import net.artelnatif.nicko.gui.admin.cache.CacheDetailledGUI; +import net.artelnatif.nicko.gui.admin.cache.CacheDetailedGUI; import org.bukkit.Material; import org.bukkit.event.inventory.ClickType; import xyz.xenondevs.invui.item.builder.ItemBuilder; @@ -17,7 +17,7 @@ public class CacheDetailed extends SuppliedItem { final ClickType clickType = click.getClickType(); if (clickType.isLeftClick() || clickType.isRightClick()) { click.getEvent().getView().close(); - new CacheDetailledGUI(click.getPlayer()).open(); + new CacheDetailedGUI(click.getPlayer()).open(); return true; } return false; diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java b/core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java index 9b966ce..5d44816 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java @@ -15,6 +15,7 @@ public class GoBack extends SuppliedItem { return builder; }, click -> { click.getEvent().getView().close(); + // TODO: 4/1/23 Get title of parent GUI Window.single().setGui(gui).setTitle("Nicko").open(click.getPlayer()); return true; }); diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/settings/OptionUnavailable.java b/core/src/main/java/net/artelnatif/nicko/gui/items/common/OptionUnavailable.java similarity index 60% rename from core/src/main/java/net/artelnatif/nicko/gui/items/settings/OptionUnavailable.java rename to core/src/main/java/net/artelnatif/nicko/gui/items/common/OptionUnavailable.java index aaa9417..1f8e38a 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/settings/OptionUnavailable.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/items/common/OptionUnavailable.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.items.settings; +package net.artelnatif.nicko.gui.items.common; import org.bukkit.Material; import xyz.xenondevs.invui.item.builder.ItemBuilder; @@ -8,9 +8,8 @@ public class OptionUnavailable extends SuppliedItem { public OptionUnavailable() { super(() -> { final ItemBuilder builder = new ItemBuilder(Material.RED_TERRACOTTA); - builder.setDisplayName("§cOption unavailable :("); - builder.addLoreLines("§7This option is disabled due to the", - "§7feature it controls being disabled."); + builder.setDisplayName("§cFeature unavailable :("); + builder.addLoreLines("§7This button is disabled."); return builder; }, click -> true); } diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/main/AppearanceManagerSubGUI.java b/core/src/main/java/net/artelnatif/nicko/gui/items/main/AppearanceManagerSubGUI.java deleted file mode 100644 index 6529667..0000000 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/main/AppearanceManagerSubGUI.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.artelnatif.nicko.gui.items.main; - -import net.artelnatif.nicko.gui.AppearanceManagerGUI; -import org.bukkit.Material; -import org.bukkit.event.inventory.ClickType; -import xyz.xenondevs.invui.item.builder.ItemBuilder; -import xyz.xenondevs.invui.item.impl.SuppliedItem; - -public class AppearanceManagerSubGUI extends SuppliedItem { - public AppearanceManagerSubGUI() { - super(() -> { - final ItemBuilder builder = new ItemBuilder(Material.ENDER_EYE); - builder.setDisplayName("§fManage §6appearance§f..."); - builder.addLoreLines("§7Access the appearance manager."); - return builder; - }, (click) -> { - final ClickType clickType = click.getClickType(); - if (clickType.isLeftClick() || clickType.isRightClick()) { - click.getEvent().getView().close(); - new AppearanceManagerGUI(click.getPlayer()).open(); - return true; - } - return false; - }); - } -} diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java b/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java index a5b7a02..c485e1a 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java @@ -10,7 +10,7 @@ public class ChangeName extends SuppliedItem { public ChangeName() { super(() -> { final ItemBuilder builder = new ItemBuilder(Material.NAME_TAG); - builder.setDisplayName("§6Name §fchange"); + builder.setDisplayName("§fChange §6name"); builder.addLoreLines("§7Only change your name."); return builder; }, click -> { diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java b/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java index cd8cbc2..91fe0ff 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java @@ -9,7 +9,7 @@ import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ChangeNameAndSkin extends SuppliedItem { public ChangeNameAndSkin() { super(() -> { - final ItemBuilder builder = new ItemBuilder(Material.ENDER_PEARL); + final ItemBuilder builder = new ItemBuilder(Material.END_PORTAL_FRAME); builder.setDisplayName("§6Skin §fand §6name §fchange"); builder.addLoreLines("§7Change both your skin and name."); return builder; diff --git a/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java b/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java index 746fe2c..e3b96a3 100644 --- a/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java +++ b/core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java @@ -1,16 +1,16 @@ package net.artelnatif.nicko.gui.items.skin; import net.artelnatif.nicko.anvil.AnvilManager; -import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.builder.SkullBuilder; import xyz.xenondevs.invui.item.impl.SuppliedItem; public class ChangeSkin extends SuppliedItem { - public ChangeSkin() { + public ChangeSkin(Player player) { super(() -> { - final ItemBuilder builder = new ItemBuilder(Material.ENDER_PEARL); - builder.setDisplayName("§6Skin §fchange"); + final SkullBuilder builder = new SkullBuilder(player.getName()); + builder.setDisplayName("§fChange §6skin"); builder.addLoreLines("§7Only change your skin."); return builder; }, click -> {