From dbc1da0c2c66fa3b71bcb14f89d1fd2d8e08214e Mon Sep 17 00:00:00 2001 From: aro Date: Wed, 21 Dec 2022 10:18:56 +0100 Subject: [PATCH] feat: custom language file reload --- .../artelnatif/nicko/gui/AdminPanelGUI.java | 5 +-- .../items/admin/ReloadLanguageFileItem.java | 35 +++++++++++++++++++ .../net/artelnatif/nicko/i18n/I18NDict.java | 5 +++ .../artelnatif/nicko/i18n/LocaleManager.java | 5 +++ .../src/main/resources/locale_en.properties | 4 ++- .../src/main/resources/locale_fr.properties | 4 ++- 6 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java index 4adae9b..d7586ab 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/AdminPanelGUI.java @@ -5,6 +5,7 @@ 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.admin.ReloadLanguageFileItem; import net.artelnatif.nicko.gui.items.common.BackItem; import org.bukkit.entity.Player; @@ -14,13 +15,13 @@ public class AdminPanelGUI { public AdminPanelGUI(Player player) { final Structure structure = new Structure("# # # # # # # # #", - "# % % M C R % % #", + "# % % P U L % % #", "B # # # # # # # #"); structure.addIngredient('B', new BackItem(new MainGUI(player).getGUI())); this.gui = new GUIBuilder<>(GUIType.NORMAL) .setStructure(structure) + .addIngredient('L', new ReloadLanguageFileItem()) .build(); - this.player = player; } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java new file mode 100644 index 0000000..d97cb6a --- /dev/null +++ b/nicko-core/src/main/java/net/artelnatif/nicko/gui/items/admin/ReloadLanguageFileItem.java @@ -0,0 +1,35 @@ +package net.artelnatif.nicko.gui.items.admin; + +import de.studiocode.invui.item.ItemProvider; +import de.studiocode.invui.item.builder.ItemBuilder; +import de.studiocode.invui.item.impl.BaseItem; +import net.artelnatif.nicko.NickoBukkit; +import net.artelnatif.nicko.i18n.I18N; +import net.artelnatif.nicko.i18n.I18NDict; +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; + +import java.util.Properties; + +public class ReloadLanguageFileItem extends BaseItem { + @Override + public ItemProvider getItemProvider() { + return new ItemBuilder(Material.OAK_DOOR).setDisplayName("§fExit"); + } + + @Override + public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { + if (clickType.isLeftClick() || clickType.isRightClick()) { + event.getView().close(); + final Properties properties = NickoBukkit.getInstance().getLocaleManager().reloadCustomLanguageFile(); + if (properties != null) { + player.sendMessage(I18N.translate(player, I18NDict.Plugin.CUSTOM_LANGUAGE_RELOAD_SUCCESS)); + } else { + player.sendMessage(I18N.translate(player, I18NDict.Plugin.CUSTOM_LANGUAGE_RELOAD_FAIL)); + } + } + } +} \ No newline at end of file diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java index af2281d..deebc55 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18NDict.java @@ -11,6 +11,11 @@ public record I18NDict(String key) { public static final I18NDict PREVIOUS_SKIN_APPLY_FAIL = new I18NDict("event.previous_skin_applied.fail"); } + public static class Plugin { + public static final I18NDict CUSTOM_LANGUAGE_RELOAD_SUCCESS = new I18NDict("admin.custom_language_reload_success"); + public static final I18NDict CUSTOM_LANGUAGE_RELOAD_FAIL = new I18NDict("admin.custom_language_reload_fail"); + } + public static class Error { public static final I18NDict PLAYER_OFFLINE = new I18NDict("error.player_offline"); public static final I18NDict SKIN_FAIL_MOJANG = new I18NDict("error.couldnt_get_skin_from_mojang"); diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleManager.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleManager.java index 722687f..18d169b 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleManager.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/LocaleManager.java @@ -63,6 +63,11 @@ public class LocaleManager { return customLanguageFile; } + public Properties reloadCustomLanguageFile() { + customLanguageFile = null; + return getCustomLanguageFile(); + } + public void findFallbackLocale() { final String locale = instance.getNickoConfig().getFallbackLocale(); try { diff --git a/nicko-core/src/main/resources/locale_en.properties b/nicko-core/src/main/resources/locale_en.properties index 682ed32..1066e42 100644 --- a/nicko-core/src/main/resources/locale_en.properties +++ b/nicko-core/src/main/resources/locale_en.properties @@ -10,4 +10,6 @@ error.generic=Unknown error error.couldnt_get_name_from_mojang=Failed to get username from Mojang error.couldnt_get_skin_from_mojang=Failed to get skin from Mojang error.couldnt_get_skin_from_cache=Failed to get skin from cache -error.invalid_username=§cThe specified username is not a valid Minecraft username. \ No newline at end of file +error.invalid_username=§cThe specified username is not a valid Minecraft username. +admin.custom_language_reload_success=§aReloaded custom language file. +admin.custom_language_reload_fail=§cFailed to reload the custom language file! \ No newline at end of file diff --git a/nicko-core/src/main/resources/locale_fr.properties b/nicko-core/src/main/resources/locale_fr.properties index 3acc650..32ef934 100644 --- a/nicko-core/src/main/resources/locale_fr.properties +++ b/nicko-core/src/main/resources/locale_fr.properties @@ -10,4 +10,6 @@ error.generic=Erreur inconnue error.couldnt_get_name_from_mojang=Impossible de récupérer le nom d'utilisateur depuis Mojang error.couldnt_get_skin_from_mojang=Impossible de récupérer le skin depuis Mojang error.couldnt_get_skin_from_cache=Impossible de récupérer le skin depuis le cache -error.invalid_username=§cLe pseudo spécifié n'est pas un pseudo Minecraft valide. \ No newline at end of file +error.invalid_username=§cLe pseudo spécifié n'est pas un pseudo Minecraft valide. +admin.custom_language_reload_success=§aFichier de langue rechargé. +admin.custom_language_reload_fail=§cImpossible de recharger le fichier de langue ! \ No newline at end of file