From d141ffe6af0a2266d17ef6518c576a81290bb17a Mon Sep 17 00:00:00 2001 From: Lorenzo <69311874+Lorenzo0111@users.noreply.github.com> Date: Fri, 16 Jul 2021 17:18:53 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9A=92=20|=20Fixed=20language=20autodetector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commands/subcommands/EditCommand.java | 2 +- .../multilang/commands/subcommands/GuiCommand.java | 12 ++++++++++-- .../multilang/handlers/MessagesManager.java | 14 ++++++++++++++ .../multilang/protocol/adapter/ChatAdapter.java | 2 ++ .../lorenzo0111/multilang/utils/PluginLoader.java | 8 +++++++- src/main/resources/config.yml | 6 +++--- src/main/resources/messages.yml | 3 ++- 7 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/main/java/me/lorenzo0111/multilang/commands/subcommands/EditCommand.java b/src/main/java/me/lorenzo0111/multilang/commands/subcommands/EditCommand.java index 953376f..483786f 100644 --- a/src/main/java/me/lorenzo0111/multilang/commands/subcommands/EditCommand.java +++ b/src/main/java/me/lorenzo0111/multilang/commands/subcommands/EditCommand.java @@ -87,7 +87,7 @@ public static void setLang(LocalizedPlayer player, String localeName, SubCommand return; } - if (!subcommand.getPlugin().getConfig().getStringList("languages").contains(localeName)) { + if (!subcommand.getPlugin().getConfigManager().getLocales().containsKey(localeName)) { player.getPlayer().sendMessage(subcommand.format(MessagesManager.get("lang-not-found"))); return; } diff --git a/src/main/java/me/lorenzo0111/multilang/commands/subcommands/GuiCommand.java b/src/main/java/me/lorenzo0111/multilang/commands/subcommands/GuiCommand.java index 7efeb4c..322afa0 100644 --- a/src/main/java/me/lorenzo0111/multilang/commands/subcommands/GuiCommand.java +++ b/src/main/java/me/lorenzo0111/multilang/commands/subcommands/GuiCommand.java @@ -31,6 +31,7 @@ import me.lorenzo0111.multilang.commands.SubCommand; import me.lorenzo0111.multilang.handlers.MessagesManager; import me.lorenzo0111.multilang.utils.GuiUtils; +import me.lorenzo0111.multilang.utils.Reflection; import me.lorenzo0111.pluginslib.command.Command; import me.lorenzo0111.pluginslib.command.annotations.NoArguments; import me.lorenzo0111.pluginslib.command.annotations.Permission; @@ -75,10 +76,17 @@ public void handleSubcommand(CommandSender sender, String[] args) { gui.setItem(22, ItemBuilder.from(Objects.requireNonNull(XMaterial.TORCH.parseItem())) .name(Component.text(MessagesManager.get("gui.current") + player.getLocale().toString())) - .asGuiItem() + .lore(Component.text(MessagesManager.get("gui.current-lore"))) + .asGuiItem(e -> { + gui.close(e.getWhoClicked()); + String locale = Reflection.getLocale(player.getPlayer()); + if (!getPlugin().getConfigManager().getLocales().containsValue(locale)) return; + + player.setLocale(getPlugin().getConfigManager().byKey(locale)); + }) ); - for (String locale : this.getPlugin().getConfig().getStringList("languages")) { + for (String locale : this.getPlugin().getConfigManager().getLocales().keySet()) { String base = this.getPlugin().getLoader().getGuiConfig().getString("base." + locale); gui.addItem(ItemBuilder diff --git a/src/main/java/me/lorenzo0111/multilang/handlers/MessagesManager.java b/src/main/java/me/lorenzo0111/multilang/handlers/MessagesManager.java index b1870bc..d6d400e 100644 --- a/src/main/java/me/lorenzo0111/multilang/handlers/MessagesManager.java +++ b/src/main/java/me/lorenzo0111/multilang/handlers/MessagesManager.java @@ -26,7 +26,9 @@ import me.lorenzo0111.multilang.MultiLangPlugin; import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import java.io.IOException; import java.util.Objects; public class MessagesManager { @@ -34,6 +36,18 @@ public class MessagesManager { public static void setPlugin(MultiLangPlugin plugin) { MessagesManager.plugin = plugin; + plugin.getLogger().info(String.format("Loaded messages.yml. (File version: %s)", plugin.getLoader().getMessagesConfig().getString("version", "1.0"))); + } + + public static void update(String path, Object value) { + FileConfiguration config = plugin.getLoader().getMessagesConfig(); + config.set(path,value); + try { + config.save(plugin.getLoader().getMessagesFile()); + plugin.getLoader().reloadMessages(); + } catch (IOException e) { + e.printStackTrace(); + } } public static String get(String path) { diff --git a/src/main/java/me/lorenzo0111/multilang/protocol/adapter/ChatAdapter.java b/src/main/java/me/lorenzo0111/multilang/protocol/adapter/ChatAdapter.java index e374aa4..ed16300 100644 --- a/src/main/java/me/lorenzo0111/multilang/protocol/adapter/ChatAdapter.java +++ b/src/main/java/me/lorenzo0111/multilang/protocol/adapter/ChatAdapter.java @@ -54,6 +54,8 @@ public void onPacketSending(PacketEvent event) { // Get the component WrappedChatComponent component = packet.getChatComponents().read(0); + if (component == null) return; + JsonObject json = new JsonParser().parse(component.getJson()).getAsJsonObject(); // If it has some text, update it diff --git a/src/main/java/me/lorenzo0111/multilang/utils/PluginLoader.java b/src/main/java/me/lorenzo0111/multilang/utils/PluginLoader.java index c858238..4f586a0 100644 --- a/src/main/java/me/lorenzo0111/multilang/utils/PluginLoader.java +++ b/src/main/java/me/lorenzo0111/multilang/utils/PluginLoader.java @@ -72,8 +72,8 @@ public boolean init() { } plugin.setConfigManager(new ConfigManager(plugin)); - plugin.getConfigManager().parse(); plugin.getConfigManager().register(); + plugin.getConfigManager().parse(); return true; } @@ -122,6 +122,8 @@ public void messages() { this.reloadMessages(); MessagesManager.setPlugin(plugin); + MessagesManager.update("version", plugin.getDescription().getVersion()); + MessagesManager.update("gui.current-lore", "&7Click here to autodetect."); } public void reloadGui() { @@ -155,4 +157,8 @@ public FileConfiguration getGuiConfig() { public FileConfiguration getMessagesConfig() { return messagesConfig; } + + public File getMessagesFile() { + return messagesFile; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 7d9a3ed..6e88f85 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -4,7 +4,7 @@ prefix: "&8[&9MultiLang&8] &r" # Enable debug debug: - enabled: false + default: false # Storage types: FILE, MYSQL storage: "FILE" @@ -23,8 +23,8 @@ default-base: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY # languages: - english: "en_US" - italiano: "it_IT" + english: "en_us" + italiano: "it_it" strings: 1: diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index e8c5443..862f443 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -13,4 +13,5 @@ changed: "&7Language changed to &9%s&7." gui: title: "&7Languages" - current: "&7Current language: &9" \ No newline at end of file + current: "&7Current language: &9" + current-lore: "&7Click here to autodetect." \ No newline at end of file