diff --git a/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java b/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java new file mode 100644 index 0000000..6a1c0f5 --- /dev/null +++ b/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java @@ -0,0 +1,44 @@ +package xyz.ineanto.nicko.gui; + +import org.bukkit.entity.Player; +import xyz.ineanto.nicko.gui.items.common.GoBackItem; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.window.Window; + +public class FavoritesGUI { + private final Player player; + private final Gui gui; + private final String title; + + public FavoritesGUI(Player player) { + final PlayerLanguage playerLanguage = new PlayerLanguage(player); + this.title = playerLanguage.translate(LanguageKey.GUI.Titles.FAVORITES, false); + + final HomeGUI parent = new HomeGUI(player); + final GoBackItem backItem = new GoBackItem(player); + + this.gui = Gui.normal() + .setStructure( + "# # # # # # # # #", + "# # # S C E # # #", + "B # # # # # # # #" + ) + .addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle())) + .build(); + this.player = player; + } + + public Gui getGUI() { + return gui; + } + + public String getTitle() { + return title; + } + + public void open() { + Window.single().setGui(gui).setTitle(title).open(player); + } +} diff --git a/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java b/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java index 321b55e..90b04dc 100644 --- a/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java +++ b/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java @@ -19,7 +19,7 @@ public class HomeGUI { final String[] dynamicStructure = new String[]{ "# # # # D # # # #", "A # # N B S # # #", - "E P # # # # # # R"}; + "E P # # F # # # R"}; if (!player.isOp() || !player.hasPermission("nicko.admin")) { dynamicStructure[2] = dynamicStructure[2].replace("A", "#"); @@ -36,6 +36,7 @@ public class HomeGUI { final SettingsAccessItem settingsAccessItem = new SettingsAccessItem(player); final AdminAccessItem adminAccessItem = new AdminAccessItem(player); final RandomSkinItem randomSkinItem = new RandomSkinItem(player); + final FavoritesItem favoritesItem = new FavoritesItem(player); this.gui = Gui.normal() .setStructure(dynamicStructure) @@ -47,6 +48,7 @@ public class HomeGUI { .addIngredient('P', settingsAccessItem.get()) .addIngredient('A', adminAccessItem.get()) .addIngredient('D', randomSkinItem.get()) + .addIngredient('F', favoritesItem.get()) .build(); this.player = player; } diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/FavoritesItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/FavoritesItem.java new file mode 100644 index 0000000..97472da --- /dev/null +++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/FavoritesItem.java @@ -0,0 +1,36 @@ +package xyz.ineanto.nicko.gui.items.home; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import xyz.ineanto.nicko.gui.FavoritesGUI; +import xyz.ineanto.nicko.language.LanguageKey; +import xyz.ineanto.nicko.language.PlayerLanguage; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.SuppliedItem; + +public class FavoritesItem { + private final PlayerLanguage playerLanguage; + + public FavoritesItem(Player player) { + this.playerLanguage = new PlayerLanguage(player); + } + + public SuppliedItem get() { + return new SuppliedItem(() -> { + final ItemBuilder builder = new ItemBuilder(Material.CHEST); + return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.FAVORITES); + }, click -> { + final Player player = click.getPlayer(); + final ClickType clickType = click.getClickType(); + if (clickType.isLeftClick() || clickType.isRightClick()) { + click.getEvent().getView().close(); + new FavoritesGUI(click.getPlayer()).open(); + player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN, 1, 1f); + return true; + } + return false; + }); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java b/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java index d8f9ef5..9ccfd4d 100644 --- a/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java +++ b/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java @@ -92,6 +92,7 @@ public class LanguageKey { public static final String CONFIRM = TITLE_KEY + "confirm"; public static final String CACHE = TITLE_KEY + "cache"; public static final String INVALIDATE_SKIN = TITLE_KEY + "invalidate_skin"; + public static final String FAVORITES = TITLE_KEY + "favorites"; } public static class Choice { @@ -112,6 +113,7 @@ public class LanguageKey { public static final String RESET = HOME_KEY + "reset"; public static final String RANDOM_SKIN = HOME_KEY + "random_skin"; public static final String SETTINGS = HOME_KEY + "settings"; + public static final String FAVORITES = HOME_KEY + "favorites"; } public static class Settings { diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml index d9ca19e..e333fa2 100644 --- a/src/main/resources/en.yml +++ b/src/main/resources/en.yml @@ -45,6 +45,7 @@ gui: confirm: "Are you sure?" cache: "Cache Management" invalidate_skin: "Purge cache..." + favorites: "Favorites" exit: name: "Exit" @@ -100,6 +101,10 @@ gui: name: "Reset appearance" lore: - "Completely remove your disguise." + favorites: + name: "Favorites" + lore: + - "List all your favorites appearances." admin: manage_cache: name: "Manage the skin cache..." diff --git a/src/main/resources/fr.yml b/src/main/resources/fr.yml index 0f6c57f..c98d408 100644 --- a/src/main/resources/fr.yml +++ b/src/main/resources/fr.yml @@ -45,6 +45,7 @@ gui: confirm: "Êtes-vous sûr ?" cache: "Gestion du Cache" invalidate_skin: "Purge du cache..." + favorites: "Favoris" exit: name: "Quitter" @@ -101,6 +102,10 @@ gui: name: "Réinitialiser l'apparence" lore: - "Supprime complètement votre déguisement." + favorites: + name: "Favoris" + lore: + - "Listez toutes vos apparences favorites." admin: manage_cache: name: "Gérer le cache de skin..."