diff --git a/src/main/java/xyz/atnrch/nicko/gui/ChoiceGUI.java b/src/main/java/xyz/atnrch/nicko/gui/ChoiceGUI.java new file mode 100644 index 0000000..5b7b7e6 --- /dev/null +++ b/src/main/java/xyz/atnrch/nicko/gui/ChoiceGUI.java @@ -0,0 +1,42 @@ +package xyz.atnrch.nicko.gui; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import xyz.atnrch.nicko.gui.items.common.choice.CancelItem; +import xyz.atnrch.nicko.gui.items.common.choice.ChoiceCallback; +import xyz.atnrch.nicko.gui.items.common.choice.ConfirmItem; +import xyz.atnrch.nicko.i18n.I18N; +import xyz.atnrch.nicko.i18n.I18NDict; +import xyz.atnrch.nicko.i18n.ItemTranslation; +import xyz.xenondevs.invui.gui.Gui; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.SimpleItem; +import xyz.xenondevs.invui.window.Window; + +public class ChoiceGUI { + private final Player player; + private final Gui gui; + + public ChoiceGUI(Player player, ChoiceCallback callback) { + final I18N i18n = new I18N(player); + final ConfirmItem confirmItem = new ConfirmItem(player, callback); + final CancelItem cancelItem = new CancelItem(player, callback); + final ItemTranslation chooseItemTranslation = i18n.translateItem(I18NDict.GUI.Choice.CHOOSE); + + this.gui = Gui.normal() + .setStructure( + "@ @ @ @ % & & & &", + "@ @ @ @ I & & & &", + "@ @ @ @ % & & & &" + ) + .addIngredient('@', confirmItem.get()) + .addIngredient('&', cancelItem.get()) + .addIngredient('I', new SimpleItem(new ItemBuilder(Material.PAPER).setDisplayName(chooseItemTranslation.getName()).get())) + .build(); + this.player = player; + } + + public void open() { + Window.single().setGui(gui).setTitle("... > Invalidate > Confirm").open(player); + } +} diff --git a/src/main/java/xyz/atnrch/nicko/gui/ConfirmGUI.java b/src/main/java/xyz/atnrch/nicko/gui/ConfirmGUI.java deleted file mode 100644 index a857a37..0000000 --- a/src/main/java/xyz/atnrch/nicko/gui/ConfirmGUI.java +++ /dev/null @@ -1,34 +0,0 @@ -package xyz.atnrch.nicko.gui; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import xyz.atnrch.nicko.gui.items.common.confirm.ChoiceCallback; -import xyz.atnrch.nicko.gui.items.common.confirm.CancelItem; -import xyz.atnrch.nicko.gui.items.common.confirm.ConfirmItem; -import xyz.xenondevs.invui.gui.Gui; -import xyz.xenondevs.invui.item.builder.ItemBuilder; -import xyz.xenondevs.invui.item.impl.SimpleItem; -import xyz.xenondevs.invui.window.Window; - -public class ConfirmGUI { - private final Player player; - private final Gui gui; - - public ConfirmGUI(Player player, ChoiceCallback callback) { - this.gui = Gui.normal() - .setStructure( - "@ @ @ @ % & & & &", - "@ @ @ @ I & & & &", - "@ @ @ @ % & & & &" - ) - .addIngredient('@', new ConfirmItem(callback)) - .addIngredient('&', new CancelItem(callback)) - .addIngredient('I', new SimpleItem(new ItemBuilder(Material.PAPER).setDisplayName("§6Select an option").get())) - .build(); - this.player = player; - } - - public void open() { - Window.single().setGui(gui).setTitle("... > Invalidate > Confirm").open(player); - } -} diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/admin/cache/CacheEntryItem.java b/src/main/java/xyz/atnrch/nicko/gui/items/admin/cache/CacheEntryItem.java index a66f206..06be4d4 100644 --- a/src/main/java/xyz/atnrch/nicko/gui/items/admin/cache/CacheEntryItem.java +++ b/src/main/java/xyz/atnrch/nicko/gui/items/admin/cache/CacheEntryItem.java @@ -6,9 +6,9 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; import xyz.atnrch.nicko.NickoBukkit; -import xyz.atnrch.nicko.gui.ConfirmGUI; +import xyz.atnrch.nicko.gui.ChoiceGUI; import xyz.atnrch.nicko.gui.CacheDetailedGUI; -import xyz.atnrch.nicko.gui.items.common.confirm.ChoiceCallback; +import xyz.atnrch.nicko.gui.items.common.choice.ChoiceCallback; import xyz.atnrch.nicko.i18n.I18N; import xyz.atnrch.nicko.i18n.I18NDict; import xyz.atnrch.nicko.mojang.MojangAPI; @@ -40,7 +40,7 @@ public class CacheEntryItem extends AsyncItem { public void handleClick(@NotNull ClickType click, @NotNull Player player, @NotNull InventoryClickEvent event) { if (click.isLeftClick() || click.isRightClick()) { event.getView().close(); - new ConfirmGUI(player, new ChoiceCallback() { + new ChoiceGUI(player, new ChoiceCallback() { @Override public void onConfirm() { final I18N i18n = new I18N(player); diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/common/UnavailableItem.java b/src/main/java/xyz/atnrch/nicko/gui/items/common/UnavailableItem.java index 56681d7..8532511 100644 --- a/src/main/java/xyz/atnrch/nicko/gui/items/common/UnavailableItem.java +++ b/src/main/java/xyz/atnrch/nicko/gui/items/common/UnavailableItem.java @@ -21,8 +21,6 @@ public class UnavailableItem { final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.UNAVAILABLE); builder.setDisplayName(translation.getName()); translation.getLore().forEach(builder::addLoreLines); - builder.setDisplayName("Unavailable"); - builder.addLoreLines("§7§oThis button is disabled."); return builder; }, click -> true); } diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/CancelItem.java b/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/CancelItem.java new file mode 100644 index 0000000..3be6245 --- /dev/null +++ b/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/CancelItem.java @@ -0,0 +1,32 @@ +package xyz.atnrch.nicko.gui.items.common.choice; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import xyz.atnrch.nicko.i18n.I18N; +import xyz.atnrch.nicko.i18n.I18NDict; +import xyz.atnrch.nicko.i18n.ItemTranslation; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.SuppliedItem; + +public class CancelItem { + private final I18N i18n; + private final ChoiceCallback callback; + + public CancelItem(Player player, ChoiceCallback callback) { + this.i18n = new I18N(player); + this.callback = callback; + } + + public SuppliedItem get() { + return new SuppliedItem(() -> { + final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); + final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Choice.CANCEL); + builder.setDisplayName(translation.getName()); + return builder; + }, click -> { + click.getEvent().getView().close(); + callback.onCancel(); + return true; + }); + } +} \ No newline at end of file diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/ChoiceCallback.java b/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/ChoiceCallback.java similarity index 61% rename from src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/ChoiceCallback.java rename to src/main/java/xyz/atnrch/nicko/gui/items/common/choice/ChoiceCallback.java index c1d5c0c..e1e3f84 100644 --- a/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/ChoiceCallback.java +++ b/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/ChoiceCallback.java @@ -1,4 +1,4 @@ -package xyz.atnrch.nicko.gui.items.common.confirm; +package xyz.atnrch.nicko.gui.items.common.choice; public interface ChoiceCallback { void onConfirm(); diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/ConfirmItem.java b/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/ConfirmItem.java new file mode 100644 index 0000000..fe5dc97 --- /dev/null +++ b/src/main/java/xyz/atnrch/nicko/gui/items/common/choice/ConfirmItem.java @@ -0,0 +1,32 @@ +package xyz.atnrch.nicko.gui.items.common.choice; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import xyz.atnrch.nicko.i18n.I18N; +import xyz.atnrch.nicko.i18n.I18NDict; +import xyz.atnrch.nicko.i18n.ItemTranslation; +import xyz.xenondevs.invui.item.builder.ItemBuilder; +import xyz.xenondevs.invui.item.impl.SuppliedItem; + +public class ConfirmItem { + private final I18N i18n; + private final ChoiceCallback callback; + + public ConfirmItem(Player player, ChoiceCallback callback) { + this.i18n = new I18N(player); + this.callback = callback; + } + + public SuppliedItem get() { + return new SuppliedItem(() -> { + final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); + final ItemTranslation translation = i18n.translateItem(I18NDict.GUI.Choice.CONFIRM); + builder.setDisplayName(translation.getName()); + return builder; + }, click -> { + click.getEvent().getView().close(); + callback.onConfirm(); + return true; + }); + } +} diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/CancelItem.java b/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/CancelItem.java deleted file mode 100644 index eb654be..0000000 --- a/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/CancelItem.java +++ /dev/null @@ -1,19 +0,0 @@ -package xyz.atnrch.nicko.gui.items.common.confirm; - -import org.bukkit.Material; -import xyz.xenondevs.invui.item.builder.ItemBuilder; -import xyz.xenondevs.invui.item.impl.SuppliedItem; - -public class CancelItem extends SuppliedItem { - public CancelItem(ChoiceCallback callback) { - super(() -> { - final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE); - builder.setDisplayName("§cCancel"); - return builder; - }, click -> { - click.getEvent().getView().close(); - callback.onCancel(); - return true; - }); - } -} \ No newline at end of file diff --git a/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/ConfirmItem.java b/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/ConfirmItem.java deleted file mode 100644 index d32fbb3..0000000 --- a/src/main/java/xyz/atnrch/nicko/gui/items/common/confirm/ConfirmItem.java +++ /dev/null @@ -1,19 +0,0 @@ -package xyz.atnrch.nicko.gui.items.common.confirm; - -import org.bukkit.Material; -import xyz.xenondevs.invui.item.builder.ItemBuilder; -import xyz.xenondevs.invui.item.impl.SuppliedItem; - -public class ConfirmItem extends SuppliedItem { - public ConfirmItem(ChoiceCallback callback) { - super(() -> { - final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE); - builder.setDisplayName("§aConfirm"); - return builder; - }, click -> { - click.getEvent().getView().close(); - callback.onConfirm(); - return true; - }); - } -} diff --git a/src/main/java/xyz/atnrch/nicko/i18n/I18NDict.java b/src/main/java/xyz/atnrch/nicko/i18n/I18NDict.java index b345e70..6c5110d 100644 --- a/src/main/java/xyz/atnrch/nicko/i18n/I18NDict.java +++ b/src/main/java/xyz/atnrch/nicko/i18n/I18NDict.java @@ -70,6 +70,14 @@ public class I18NDict { public static final String UNAVAILABLE = GUI_KEY + "unavailable"; public static final String GO_BACK = GUI_KEY + "go_back"; + public static class Choice { + private static final String CHOICE_KEY = GUI_KEY + "choice."; + + public static final String CONFIRM = CHOICE_KEY + "confirm"; + public static final String CHOOSE = CHOICE_KEY + "choose"; + public static final String CANCEL = CHOICE_KEY + "cancel"; + } + public static class Home { private static final String HOME_KEY = GUI_KEY + "home."; diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml index 348baf0..0b649cd 100644 --- a/src/main/resources/en.yml +++ b/src/main/resources/en.yml @@ -36,16 +36,23 @@ gui: name: "Unavailable" lore: - "§7§oThis button is disabled." + choice: + confirm: + name: "§aConfirm" + choose: + name: "§6§oChoose an option..." + cancel: + name: "§cCancel" home: title: "Nicko - Home" admin: name: "Administration panel" lore: - - "Configure and manage Nicko." + - "§7Configure and manage Nicko." settings: name: "Settings" lore: - - "Fine tune your experience with Nicko." + - "§7Fine tune your experience with Nicko." change_name: name: "§6Nickname §fchange" change_skin: @@ -55,7 +62,7 @@ gui: reset: name: "Reset appearance" lore: - - "Completely remove your disguise." + - "§7Completely remove your disguise." admin: title: "Nicko > Administration" manage_cache: diff --git a/src/main/resources/fr.yml b/src/main/resources/fr.yml index c2c8b8e..504f712 100644 --- a/src/main/resources/fr.yml +++ b/src/main/resources/fr.yml @@ -1,7 +1,7 @@ error: generic: "Une erreur inconnue c'est produite." permission: "§cVous ne possédez pas la permission." - invalid_username: "§cLe pseudo n''est pas un pseudo Minecraft valide." + invalid_username: "§cLe pseudo n'est pas un pseudo Minecraft valide." mojang_name: "Un compte Minecraft avec ce nom n'existe pas." mojang_skin: "Ce compte Minecraft n'a pas de skin." cache: "Impossible de récupérer le skin depuis le cache." @@ -13,14 +13,14 @@ event: error: "§cImpossible de mettre à jour vos paramètres. §7§o({0})" appearance: set: - error: "§cImpossible d''appliquer votre déguisement. §7§o({0})" + error: "§cImpossible d'appliquer votre déguisement. §7§o({0})" ok: "§fDéguisement appliqué." restore: - error: "§cImpossible d''appliquer votre précédent déguisement. §7§o({0})" + error: "§cImpossible d'appliquer votre précédent déguisement. §7§o({0})" ok: "§aVotre précédent déguisement a été appliqué." remove: error: "§cImpossible de retirer votre déguisement. Il sera réinitialisé à votre prochaine reconnexion." - missing: "§cVous n''avez pas de déguisement." + missing: "§cVous n'avez pas de déguisement." ok: "§fDéguisement retiré." admin: cache: @@ -36,16 +36,23 @@ gui: name: "Indisponible" lore: - "§7§oCe boutton est désactivé." + choice: + confirm: + name: "§aConfirmer" + choose: + name: "§6§oChoisissez une option..." + cancel: + name: "§cAnnuler" home: title: "Nicko - Accueil" admin: - name: "Panel d''administration" + name: "Panel d'administration" lore: - - "Configurez et gérez Nicko." + - "§7Configurez et gérez Nicko." settings: name: "Paramètres" lore: - - "Gérez votre expérience avec Nicko." + - "§7Gérez votre expérience avec Nicko." change_name: name: "Changer le §6pseudo" change_skin: @@ -55,7 +62,7 @@ gui: reset: name: "Réinitialiser l'apparence" lore: - - "Supprime complètement votre déguisement." + - "§7Supprime complètement votre déguisement." admin: title: "Nicko > Administration" manage_cache: