diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java index 45472f2..8350f96 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/NickoBukkit.java @@ -8,7 +8,7 @@ import net.artelnatif.nicko.command.NickoCommand; import net.artelnatif.nicko.config.NickoConfiguration; import net.artelnatif.nicko.event.PlayerJoinListener; import net.artelnatif.nicko.event.PlayerQuitListener; -import net.artelnatif.nicko.gui.items.main.ExitDoorItem; +import net.artelnatif.nicko.gui.items.main.ExitGUI; import net.artelnatif.nicko.i18n.Locale; import net.artelnatif.nicko.i18n.LocaleFileManager; import net.artelnatif.nicko.impl.Internals; @@ -120,7 +120,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('E', new ExitDoorItem()); + Structure.addGlobalIngredient('E', new ExitGUI()); getLogger().info("Loading persistence..."); dataStore = new PlayerDataStore(this); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java new file mode 100644 index 0000000..c0c964f --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminGUI.java @@ -0,0 +1,35 @@ +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.window.impl.single.SimpleWindow; +import net.artelnatif.nicko.gui.items.admin.ManageCache; +import net.artelnatif.nicko.gui.items.common.GoBack; +import org.bukkit.entity.Player; + +public class AdminGUI { + private final Player player; + private final GUI gui; + + public AdminGUI(Player player) { + this.gui = new GUIBuilder<>(GUIType.NORMAL) + .setStructure( + "# # # # # # # # #", + "# % % X X S % % #", + "B # # # # # # # #" + ) + .addIngredient('S', new ManageCache()) + .addIngredient('B', new GoBack(new MainGUI(player).getGUI())) + .build(); + this.player = player; + } + + public GUI getGUI() { + return gui; + } + + public void open() { + new SimpleWindow(player, "Nicko", gui).show(); + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java new file mode 100644 index 0000000..d275140 --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AppearanceManagerGUI.java @@ -0,0 +1,37 @@ +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.window.impl.single.SimpleWindow; +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; + +public class AppearanceManagerGUI { + private final Player player; + private final GUI gui; + + public AppearanceManagerGUI(Player player) { + this.gui = new GUIBuilder<>(GUIType.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() { + 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 cec905c..ce8193b 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 @@ -3,35 +3,35 @@ 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.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 net.artelnatif.nicko.gui.items.main.AdminSubGUI; +import net.artelnatif.nicko.gui.items.main.ResetAppearance; +import net.artelnatif.nicko.gui.items.main.SettingsSubGUI; +import net.artelnatif.nicko.gui.items.main.AppearanceManagerSubGUI; import org.bukkit.entity.Player; public class MainGUI { private final Player player; private final GUI gui; - private final String[] structure = new String[]{ - "# # # # # # # # #", - "# % % % A % % % #", - "# % # R S P # % #", - "# % % % % % % % #", - "E # # # # # # # #"}; public MainGUI(Player player) { + final String[] dynamicStructure = new String[]{ + "# # # # # # # # #", + "# % % % A % % % #", + "# % # R S P # % #", + "# % % % % % % % #", + "E # # # # # # # #"}; + if (!player.hasPermission("nicko.admin") || !player.isOp()) { - structure[3] = structure[3].replace("A", "#"); + dynamicStructure[3] = dynamicStructure[3].replace("A", "#"); } this.gui = new GUIBuilder<>(GUIType.NORMAL) - .setStructure(new Structure(structure)) - .addIngredient('R', new ResetItem()) - .addIngredient('S', new SkinItem()) - .addIngredient('P', new SettingsItem()) - .addIngredient('A', new AdminItem()) + .setStructure(dynamicStructure) + .addIngredient('R', new ResetAppearance()) + .addIngredient('S', new AppearanceManagerSubGUI()) + .addIngredient('P', new SettingsSubGUI()) + .addIngredient('A', new AdminSubGUI()) .build(); this.player = player; } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/SettingsGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java similarity index 54% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/SettingsGUI.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java index 0a7e6fe..7a84632 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/SettingsGUI.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/SettingsGUI.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.sub; +package net.artelnatif.nicko.gui; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.builder.GUIBuilder; @@ -6,30 +6,31 @@ import de.studiocode.invui.gui.builder.guitype.GUIType; import de.studiocode.invui.window.impl.single.SimpleWindow; import net.artelnatif.nicko.NickoBukkit; import net.artelnatif.nicko.gui.MainGUI; -import net.artelnatif.nicko.gui.items.common.BackItem; -import net.artelnatif.nicko.gui.items.settings.BungeeCordCyclingItem; -import net.artelnatif.nicko.gui.items.settings.LanguageCyclingItem; +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 org.bukkit.entity.Player; public class SettingsGUI { private final Player player; private final GUI gui; - private final String[] structure = new String[]{ - "# # # # # # # # #", - "# % % L # T % % #", - "B # # # # # # # #" - }; public SettingsGUI(Player player) { + final String[] dynamicStructure = new String[]{ + "# # # # # # # # #", + "# % % L # T % % #", + "B # # # # # # # #" + }; + if (!NickoBukkit.getInstance().getNickoConfig().isBungeecordSupport()) { - structure[1] = structure[1].replace("T", "#"); + dynamicStructure[1] = dynamicStructure[1].replace("T", "#"); } this.gui = new GUIBuilder<>(GUIType.NORMAL) - .setStructure(structure) - .addIngredient('B', new BackItem(new MainGUI(player).getGUI())) - .addIngredient('L', new LanguageCyclingItem().get(player)) - .addIngredient('T', new BungeeCordCyclingItem().get(player)) + .setStructure(dynamicStructure) + .addIngredient('B', new GoBack(new MainGUI(player).getGUI())) + .addIngredient('L', new LanguageCycling().get(player)) + .addIngredient('T', new BungeeCordCycling().get(player)) .build(); this.player = player; } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java new file mode 100644 index 0000000..ac23ff1 --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/admin/CacheManagementGUI.java @@ -0,0 +1,36 @@ +package net.artelnatif.nicko.gui.admin; + +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.window.impl.single.SimpleWindow; +import net.artelnatif.nicko.gui.AdminGUI; +import net.artelnatif.nicko.gui.items.admin.cache.CacheDetailed; +import net.artelnatif.nicko.gui.items.admin.cache.CacheInvalidate; +import net.artelnatif.nicko.gui.items.admin.cache.CacheOverview; +import net.artelnatif.nicko.gui.items.common.GoBack; +import org.bukkit.entity.Player; + +public class CacheManagementGUI { + private final Player player; + private final GUI gui; + + public CacheManagementGUI(Player player) { + this.gui = new GUIBuilder<>(GUIType.NORMAL) + .setStructure("B # S A D") + .addIngredient('B', new GoBack(new AdminGUI(player).getGUI())) + .addIngredient('S', new CacheOverview()) + .addIngredient('A', new CacheInvalidate()) + .addIngredient('D', new CacheDetailed()) + .build(); + this.player = player; + } + + public GUI getGUI() { + return gui; + } + + public void open() { + new SimpleWindow(player, "Nicko", gui).show(); + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailledGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailledGUI.java new file mode 100644 index 0000000..9e51496 --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/admin/cache/CacheDetailledGUI.java @@ -0,0 +1,68 @@ +package net.artelnatif.nicko.gui.admin.cache; + +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.Markers; +import de.studiocode.invui.item.Item; +import de.studiocode.invui.item.ItemProvider; +import de.studiocode.invui.window.impl.single.SimpleWindow; +import net.artelnatif.nicko.NickoBukkit; +import net.artelnatif.nicko.gui.admin.CacheManagementGUI; +import net.artelnatif.nicko.gui.items.admin.cache.SkinPlaceholder; +import net.artelnatif.nicko.gui.items.common.GoBack; +import net.artelnatif.nicko.gui.items.common.ScrollDown; +import net.artelnatif.nicko.gui.items.common.ScrollUp; +import net.artelnatif.nicko.mojang.MojangSkin; +import org.bukkit.entity.Player; + +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentMap; +import java.util.stream.Collectors; + +public class CacheDetailledGUI { + private final Player player; + private final GUI gui; + + public CacheDetailledGUI(Player player) { + final ConcurrentMap> skins = NickoBukkit.getInstance().getMojangAPI().getCache().asMap(); + final List loadedSkins = skins.entrySet().stream() + .filter(entry -> entry.getValue().isPresent()) + .map(Map.Entry::getKey) + .toList(); + + System.out.println("loadedSkins.toString() = " + loadedSkins); + + final List items = loadedSkins.stream() + .map(SkinPlaceholder::new) + .collect(Collectors.toList()); + + this.gui = new GUIBuilder<>(GUIType.SCROLL_ITEMS) + .setStructure( + "% # # # # # # # %", + "# x x x x x x U #", + "# x x x x x x # #", + "# x x x x x x # #", + "# x x x x x x D #", + "B # # # # # # # %" + ) + .addIngredient('x', Markers.ITEM_LIST_SLOT_VERTICAL) + .addIngredient('U', new ScrollUp()) + .addIngredient('D', new ScrollDown()) + .addIngredient('B', new GoBack(new CacheManagementGUI(player).getGUI())) + .setBackground(ItemProvider.EMPTY) + .setItems(items) + .build(); + this.player = player; + } + + public GUI getGUI() { + return gui; + } + + public void open() { + new SimpleWindow(player, "Nicko", gui).show(); + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/SkinInvalidatorItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ManageCache.java similarity index 83% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/SkinInvalidatorItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ManageCache.java index 682b1bf..9ac2bc5 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/SkinInvalidatorItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ManageCache.java @@ -3,13 +3,13 @@ package net.artelnatif.nicko.gui.items.admin; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.builder.SkullBuilder; import de.studiocode.invui.item.impl.BaseItem; -import net.artelnatif.nicko.gui.sub.SkinInvalidatorSelectionGUI; +import net.artelnatif.nicko.gui.admin.CacheManagementGUI; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class SkinInvalidatorItem extends BaseItem { +public class ManageCache extends BaseItem { @Override public ItemProvider getItemProvider() { final SkullBuilder builder = new SkullBuilder("Notch"); @@ -22,7 +22,7 @@ public class SkinInvalidatorItem extends BaseItem { public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { if (clickType.isLeftClick() || clickType.isRightClick()) { event.getView().close(); - new SkinInvalidatorSelectionGUI(player).open(); + new CacheManagementGUI(player).open(); } } } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java new file mode 100644 index 0000000..ab5ec0c --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheDetailed.java @@ -0,0 +1,29 @@ +package net.artelnatif.nicko.gui.items.admin.cache; + +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.admin.cache.CacheDetailledGUI; +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 CacheDetailed extends BaseItem { + @Override + public ItemProvider getItemProvider() { + final ItemBuilder builder = new ItemBuilder(Material.ARROW); + builder.setDisplayName("§6Invalidate specific skin..."); + builder.addLoreLines("§7PLACEHOLDER REPLACE ME"); + return builder; + } + + @Override + public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { + if (clickType.isLeftClick() || clickType.isRightClick()) { + event.getView().close(); + new CacheDetailledGUI(player).open(); + } + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/invalidator/SkinCacheInvalidateAllItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheInvalidate.java similarity index 88% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/invalidator/SkinCacheInvalidateAllItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheInvalidate.java index f06462e..3d31a8f 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/invalidator/SkinCacheInvalidateAllItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheInvalidate.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.items.admin.invalidator; +package net.artelnatif.nicko.gui.items.admin.cache; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.builder.ItemBuilder; @@ -12,10 +12,10 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class SkinCacheInvalidateAllItem extends BaseItem { +public class CacheInvalidate extends BaseItem { @Override public ItemProvider getItemProvider() { - final ItemBuilder builder = new ItemBuilder(Material.BARRIER); + final ItemBuilder builder = new ItemBuilder(Material.TNT); builder.setDisplayName("§6Invalidate the full Skin Cache"); builder.addLoreLines( "§c§oNOT RECOMMENDED", diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/invalidator/SkinCacheStatisticsItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheOverview.java similarity index 93% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/invalidator/SkinCacheStatisticsItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheOverview.java index 66bc4f8..d9cd54b 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/invalidator/SkinCacheStatisticsItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/CacheOverview.java @@ -1,4 +1,4 @@ -package net.artelnatif.nicko.gui.items.admin.invalidator; +package net.artelnatif.nicko.gui.items.admin.cache; import com.google.common.cache.CacheStats; import com.google.common.cache.LoadingCache; @@ -17,7 +17,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Optional; -public class SkinCacheStatisticsItem extends BaseItem { +public class CacheOverview extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.OAK_SIGN); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/SkinPlaceholder.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/SkinPlaceholder.java new file mode 100644 index 0000000..f99b17a --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/cache/SkinPlaceholder.java @@ -0,0 +1,18 @@ +package net.artelnatif.nicko.gui.items.admin.cache; + +import de.studiocode.invui.item.builder.ItemBuilder; +import de.studiocode.invui.item.builder.SkullBuilder; +import de.studiocode.invui.item.impl.AsyncItem; +import org.bukkit.Material; + +public class SkinPlaceholder extends AsyncItem { + public SkinPlaceholder(String name) { + super(new ItemBuilder(Material.PAINTING).setDisplayName("§7§oLoading..."), () -> { + System.out.println("name = " + name); + final SkullBuilder skull = new SkullBuilder(name); + skull.setDisplayName(name); + skull.addLoreLines("§7Click to invalidate skin"); + return skull; + }); + } +} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/BackItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java similarity index 93% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/BackItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java index 1b6c589..73609d2 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/BackItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/GoBack.java @@ -11,10 +11,10 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class BackItem extends BaseItem { +public class GoBack extends BaseItem { private final GUI gui; - public BackItem(GUI gui) { + public GoBack(GUI gui) { this.gui = gui; } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/ScrollDown.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/ScrollDown.java new file mode 100644 index 0000000..3050dda --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/ScrollDown.java @@ -0,0 +1,26 @@ +package net.artelnatif.nicko.gui.items.common; + +import de.studiocode.invui.gui.impl.ScrollGUI; +import de.studiocode.invui.item.ItemProvider; +import de.studiocode.invui.item.builder.ItemBuilder; +import de.studiocode.invui.item.impl.controlitem.ScrollItem; +import org.bukkit.Material; + +public class ScrollDown extends ScrollItem { + + public ScrollDown() { + super(1); + } + + @Override + public ItemProvider getItemProvider(ScrollGUI gui) { + ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); + builder.setDisplayName("§7Scroll down"); + if (!gui.canScroll(1)) + builder.addLoreLines("§cYou can't scroll further down"); + + return builder; + } + +} + diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/ScrollUp.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/ScrollUp.java new file mode 100644 index 0000000..0be6e71 --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/common/ScrollUp.java @@ -0,0 +1,26 @@ +package net.artelnatif.nicko.gui.items.common; + +import de.studiocode.invui.gui.impl.ScrollGUI; +import de.studiocode.invui.item.ItemProvider; +import de.studiocode.invui.item.builder.ItemBuilder; +import de.studiocode.invui.item.impl.controlitem.ScrollItem; +import org.bukkit.Material; + +public class ScrollUp extends ScrollItem { + + public ScrollUp() { + super(-1); + } + + @Override + public ItemProvider getItemProvider(ScrollGUI gui) { + ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); + builder.setDisplayName("§7Scroll up"); + if (!gui.canScroll(-1)) + builder.addLoreLines("§cYou've reached the top"); + + return builder; + } + +} + 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/AdminSubGUI.java similarity index 89% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AdminItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AdminSubGUI.java index 39cccc8..b2e4d47 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/AdminSubGUI.java @@ -3,7 +3,7 @@ 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.sub.AdminPanelGUI; +import net.artelnatif.nicko.gui.AdminGUI; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; @@ -12,7 +12,7 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.ItemFlag; import org.jetbrains.annotations.NotNull; -public class AdminItem extends BaseItem { +public class AdminSubGUI extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.COMMAND_BLOCK); @@ -27,7 +27,7 @@ public class AdminItem extends BaseItem { public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { if (clickType.isLeftClick() || clickType.isRightClick()) { event.getView().close(); - new AdminPanelGUI(player).open(); + new AdminGUI(player).open(); } } } 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/AppearanceManagerSubGUI.java similarity index 85% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SkinItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/AppearanceManagerSubGUI.java index 9bf5fb7..68091f5 100644 --- 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/AppearanceManagerSubGUI.java @@ -3,14 +3,14 @@ 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.sub.AppearanceGUI; +import net.artelnatif.nicko.gui.AppearanceManagerGUI; 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 { +public class AppearanceManagerSubGUI extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.ENDER_EYE); @@ -23,7 +23,7 @@ public class SkinItem extends BaseItem { public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { if (clickType.isLeftClick() || clickType.isRightClick()) { event.getView().close(); - new AppearanceGUI(player).open(); + new AppearanceManagerGUI(player).open(); } } } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ExitDoorItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ExitGUI.java similarity index 94% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ExitDoorItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ExitGUI.java index 998c203..ac313fb 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ExitDoorItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ExitGUI.java @@ -9,7 +9,7 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class ExitDoorItem extends BaseItem { +public class ExitGUI extends BaseItem { @Override public ItemProvider getItemProvider() { return new ItemBuilder(Material.OAK_DOOR).setDisplayName("§fExit"); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetAppearance.java similarity index 97% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetAppearance.java index 9f6f651..44a2e9d 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/ResetAppearance.java @@ -12,7 +12,7 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class ResetItem extends BaseItem { +public class ResetAppearance extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.TNT); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SettingsItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SettingsSubGUI.java similarity index 91% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SettingsItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SettingsSubGUI.java index 0085122..f8a2b33 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SettingsItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/main/SettingsSubGUI.java @@ -3,14 +3,14 @@ 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.sub.SettingsGUI; +import net.artelnatif.nicko.gui.SettingsGUI; 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 SettingsItem extends BaseItem { +public class SettingsSubGUI extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.COMPARATOR); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/BungeeCordCyclingItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/BungeeCordCycling.java similarity index 98% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/BungeeCordCyclingItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/BungeeCordCycling.java index 21858bb..03abd7d 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/BungeeCordCyclingItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/BungeeCordCycling.java @@ -13,7 +13,7 @@ import org.bukkit.entity.Player; import java.util.Optional; -public class BungeeCordCyclingItem { +public class BungeeCordCycling { private final ItemProvider[] providers = new ItemProvider[]{ getItemProviderForValue(true), getItemProviderForValue(false) diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCycling.java similarity index 98% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCycling.java index 7f77c78..64cb231 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCyclingItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/settings/LanguageCycling.java @@ -14,7 +14,7 @@ import org.bukkit.entity.Player; import java.util.*; -public class LanguageCyclingItem { +public class LanguageCycling { private final ItemProvider[] providers = getItems(); public BaseItem get(Player player) { diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java similarity index 95% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java index efb2c41..7d4cd6b 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeName.java @@ -10,7 +10,7 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class ChangeNameItem extends BaseItem { +public class ChangeName extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.NAME_TAG); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkinItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java similarity index 95% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkinItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java index 1a8d128..d404ec3 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkinItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeNameAndSkin.java @@ -10,7 +10,7 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class ChangeNameAndSkinItem extends BaseItem { +public class ChangeNameAndSkin extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.ENDER_PEARL); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkinItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java similarity index 95% rename from nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkinItem.java rename to nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java index 85ff494..e94bb70 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkinItem.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/skin/ChangeSkin.java @@ -10,7 +10,7 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; -public class ChangeSkinItem extends BaseItem { +public class ChangeSkin extends BaseItem { @Override public ItemProvider getItemProvider() { final ItemBuilder builder = new ItemBuilder(Material.PAINTING); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/AdminPanelGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/AdminPanelGUI.java deleted file mode 100644 index ae18afa..0000000 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/AdminPanelGUI.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.artelnatif.nicko.gui.sub; - -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.window.impl.single.SimpleWindow; -import net.artelnatif.nicko.gui.MainGUI; -import net.artelnatif.nicko.gui.items.admin.SkinInvalidatorItem; -import net.artelnatif.nicko.gui.items.common.BackItem; -import org.bukkit.entity.Player; - -public class AdminPanelGUI { - private final Player player; - private final GUI gui; - private final String[] structure = new String[]{ - "# # # # # # # # #", - "# % % X X S % % #", - "B # # # # # # # #" - }; - - public AdminPanelGUI(Player player) { - this.gui = new GUIBuilder<>(GUIType.NORMAL) - .setStructure(structure) - .addIngredient('S', new SkinInvalidatorItem()) - .addIngredient('B', new BackItem(new MainGUI(player).getGUI())) - .build(); - this.player = player; - } - - public GUI getGUI() { - return gui; - } - - public void open() { - new SimpleWindow(player, "Nicko", gui).show(); - } -} diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/AppearanceGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/AppearanceGUI.java deleted file mode 100644 index 56e4f10..0000000 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/AppearanceGUI.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.artelnatif.nicko.gui.sub; - -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.MainGUI; -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[] structure = new String[]{ - "# # # # # # # # #", - "# % % % % % % % #", - "# % # N A S # % #", - "# % % % % % % % #", - "B # # # # # # # #"}; - - public AppearanceGUI(Player player) { - this.gui = new GUIBuilder<>(GUIType.NORMAL) - .setStructure(new Structure(structure)) - .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/sub/SkinInvalidatorSelectionGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/SkinInvalidatorSelectionGUI.java deleted file mode 100644 index 20edb57..0000000 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/sub/SkinInvalidatorSelectionGUI.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.artelnatif.nicko.gui.sub; - -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.window.impl.single.SimpleWindow; -import net.artelnatif.nicko.gui.items.admin.invalidator.SkinCacheStatisticsItem; -import net.artelnatif.nicko.gui.items.common.BackItem; -import net.artelnatif.nicko.gui.items.admin.invalidator.SkinCacheInvalidateAllItem; -import org.bukkit.entity.Player; - -public class SkinInvalidatorSelectionGUI { - private final Player player; - private final GUI gui; - private final String[] structure = new String[]{ - "B # S A #", - }; - - public SkinInvalidatorSelectionGUI(Player player) { - this.gui = new GUIBuilder<>(GUIType.NORMAL) - .setStructure(structure) - .addIngredient('B', new BackItem(new AdminPanelGUI(player).getGUI())) - .addIngredient('A', new SkinCacheInvalidateAllItem()) - .addIngredient('S', new SkinCacheStatisticsItem()) - .build(); - this.player = player; - } - - public void open() { - new SimpleWindow(player, "Nicko", gui).show(); - } -}