From 522da7369ac75051167acc54dedee6753adb4f24 Mon Sep 17 00:00:00 2001 From: aroooo Date: Fri, 4 Nov 2022 16:52:15 +0100 Subject: [PATCH] feat: revamp i18n key feature --- .../nicko/command/NickoCommand.java | 24 ++++----- .../nicko/command/sub/NickoCheckSubCmd.java | 13 +++-- .../nicko/disguise/UpdateResult.java | 6 +-- .../nicko/event/PlayerJoinListener.java | 4 +- .../nicko/gui/items/main/ResetItem.java | 6 +-- .../java/net/artelnatif/nicko/i18n/I18N.java | 4 +- .../net/artelnatif/nicko/i18n/I18NDict.java | 51 ++++++++----------- .../src/main/resources/locale_en.properties | 3 +- .../src/main/resources/locale_fr.properties | 3 +- 9 files changed, 56 insertions(+), 58 deletions(-) diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/command/NickoCommand.java b/nicko-core/src/main/java/net/artelnatif/nicko/command/NickoCommand.java index 87fbb45..e21a0de 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/command/NickoCommand.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/command/NickoCommand.java @@ -30,24 +30,22 @@ public class NickoCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (args.length >= 1) { - switch (args[0]) { - case "disguise" -> new NickoDisguiseSubCmd(this).execute(sender); - case "debug" -> new NickoDebugSubCmd(this).execute(sender, args); - case "check" -> new NickoCheckSubCmd(this).execute(sender, args); - case "gui" -> new NickoGUISubCmd(this).execute(sender, args); - default -> sendHelpMessages(sender); - } - } else { - if (sender instanceof Player player) { - new MainGUI(player).open(); - return false; + if (sender instanceof Player player) { + if (args.length >= 1) { + switch (args[0]) { + case "disguise" -> new NickoDisguiseSubCmd(this).execute(sender); + case "debug" -> new NickoDebugSubCmd(this).execute(sender, args); + case "check" -> new NickoCheckSubCmd(this).execute(player, args); + case "gui" -> new NickoGUISubCmd(this).execute(sender, args); + default -> sendHelpMessages(sender); + } } - sender.sendMessage("The GUI can only be opened in-game."); + new MainGUI(player).open(); return false; } + sender.sendMessage("The GUI can only be opened in-game."); return false; } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/command/sub/NickoCheckSubCmd.java b/nicko-core/src/main/java/net/artelnatif/nicko/command/sub/NickoCheckSubCmd.java index 0651cd1..24f72ef 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/command/sub/NickoCheckSubCmd.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/command/sub/NickoCheckSubCmd.java @@ -3,9 +3,11 @@ package net.artelnatif.nicko.command.sub; import net.artelnatif.nicko.NickoBukkit; import net.artelnatif.nicko.command.NickoCommand; import net.artelnatif.nicko.disguise.AppearanceManager; +import net.artelnatif.nicko.i18n.I18N; +import net.artelnatif.nicko.i18n.I18NDict; +import net.artelnatif.nicko.mojang.MojangUtils; import net.artelnatif.nicko.utils.PlayerUtils; import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.StringJoiner; @@ -15,11 +17,16 @@ public class NickoCheckSubCmd extends NickoSubCmd { super(nickoCommand); } - public void execute(CommandSender sender, String[] args) { + public void execute(Player player, String[] args) { final String targetName = args[1]; final Player target = Bukkit.getPlayerExact(targetName); AppearanceManager appearanceManager; + if (MojangUtils.isUsernameInvalid(targetName)) { + player.sendMessage(I18N.translate(player, I18NDict.Error.INVALID_USERNAME)); + return; + } + if (PlayerUtils.isPlayerOffline(target)) { appearanceManager = AppearanceManager.get(targetName); } else { @@ -36,6 +43,6 @@ public class NickoCheckSubCmd extends NickoSubCmd { builder.add("§7- §fSkin: §6" + appearanceManager.getSkin()); } - sender.sendMessage(builder.toString()); + player.sendMessage(builder.toString()); } } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/disguise/UpdateResult.java b/nicko-core/src/main/java/net/artelnatif/nicko/disguise/UpdateResult.java index dfe60ce..191a446 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/disguise/UpdateResult.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/disguise/UpdateResult.java @@ -3,10 +3,10 @@ package net.artelnatif.nicko.disguise; import net.artelnatif.nicko.i18n.I18NDict; public class UpdateResult { - private final I18NDict.Error errorMessage; + private final I18NDict errorMessage; private boolean error = false; - public UpdateResult(I18NDict.Error errorMessage) { + public UpdateResult(I18NDict errorMessage) { this.error = true; this.errorMessage = errorMessage; } @@ -19,7 +19,7 @@ public class UpdateResult { return error; } - public I18NDict.Error getErrorMessage() { + public I18NDict getErrorMessage() { return errorMessage; } } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java b/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java index 5f2d2bc..79ecc5f 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/event/PlayerJoinListener.java @@ -23,9 +23,9 @@ public class PlayerJoinListener implements Listener { final boolean skinChange = !player.getName().equals(appearanceManager.getSkin()); final UpdateResult updateResult = appearanceManager.updatePlayer(skinChange); if (updateResult.isError()) { - player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLY_FAIL.getKey(), I18N.translate(player, updateResult.getErrorMessage().getKey()))); + player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLY_FAIL, I18N.translate(player, updateResult.getErrorMessage()))); } else { - player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLIED.getKey())); + player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLIED)); } } }, 20L); 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/ResetItem.java index 1baf59d..4be4910 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/ResetItem.java @@ -27,15 +27,15 @@ public class ResetItem extends BaseItem { final AppearanceManager appearanceManager = AppearanceManager.get(player); if (!appearanceManager.hasData()) { - player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_NOTACTIVE.getKey())); + player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_NOTACTIVE)); event.getView().close(); return; } if (!appearanceManager.reset().isError()) { - player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_SUCCESS.getKey())); + player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_SUCCESS)); } else { - player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_FAIL.getKey())); + player.sendMessage(I18N.translate(player, I18NDict.Event.UNDISGUISE_FAIL)); } } } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java index 6cf617c..0bb7f9b 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/i18n/I18N.java @@ -26,9 +26,9 @@ public class I18N { return ResourceBundle.getBundle("locale", getLocale(player)); } - public static String translate(Player player, String key, Object... arguments) { + public static String translate(Player player, I18NDict key, Object... arguments) { try { - formatter.applyPattern(getBundle(player).getString(key)); + formatter.applyPattern(getBundle(player).getString(key.getKey())); return NickoBukkit.getInstance().getNickoConfig().getPrefix() + formatter.format(arguments); } catch (Exception e) { return NickoBukkit.getInstance().getNickoConfig().getPrefix() + key; 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 fb5280f..d10f3a2 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 @@ -1,40 +1,31 @@ package net.artelnatif.nicko.i18n; public class I18NDict { - public enum Event { - UNDISGUISE_SUCCESS("undisguise.success"), - UNDISGUISE_FAIL("undisguise.fail"), - UNDISGUISE_NOTACTIVE("undisguise.notactive"), - DISGUISE_SUCCESS("disguise.success"), - DISGUISE_FAIL("disguise.fail"), - PREVIOUS_SKIN_APPLIED("previous_skin_applied.success"), - PREVIOUS_SKIN_APPLY_FAIL("previous_skin_applied.fail"); + private String key; - private final String messageKey; - - Event(String messageKey) { - this.messageKey = "event." + messageKey; - } - - public String getKey() { - return messageKey; - } + public I18NDict(String key) { + this.key = key; } - public enum Error { - SKIN_FAIL_MOJANG("couldnt_get_skin_from_mojang"), - SKIN_FAIL_CACHE("couldnt_get_skin_from_cache"), - NAME_FAIL_MOJANG("couldnt_get_name_from_mojang"), - UNEXPECTED_ERROR("generic"); + public static class Event { + public static final I18NDict UNDISGUISE_SUCCESS = new I18NDict("undisguise.success"); + public static final I18NDict UNDISGUISE_FAIL = new I18NDict("undisguise.fail"); + public static final I18NDict UNDISGUISE_NOTACTIVE = new I18NDict("undisguise.notactive"); + public static final I18NDict DISGUISE_SUCCESS = new I18NDict("disguise.success"); + public static final I18NDict DISGUISE_FAIL = new I18NDict("disguise.fail"); + public static final I18NDict PREVIOUS_SKIN_APPLIED = new I18NDict("previous_skin_applied.success"); + public static final I18NDict PREVIOUS_SKIN_APPLY_FAIL = new I18NDict("previous_skin_applied.fail"); + } - private final String messageKey; + public static class Error { + public static final I18NDict SKIN_FAIL_MOJANG = new I18NDict("couldnt_get_skin_from_mojang"); + public static final I18NDict SKIN_FAIL_CACHE = new I18NDict("couldnt_get_skin_from_cache"); + public static final I18NDict NAME_FAIL_MOJANG = new I18NDict("couldnt_get_name_from_mojang"); + public static final I18NDict INVALID_USERNAME = new I18NDict("invalid_username"); + public static final I18NDict UNEXPECTED_ERROR = new I18NDict("generic"); + } - Error(String messageKey) { - this.messageKey = "error." + messageKey; - } - - public String getKey() { - return messageKey; - } + public String getKey() { + return key; } } diff --git a/nicko-core/src/main/resources/locale_en.properties b/nicko-core/src/main/resources/locale_en.properties index 9b1bbeb..36e194e 100644 --- a/nicko-core/src/main/resources/locale_en.properties +++ b/nicko-core/src/main/resources/locale_en.properties @@ -9,4 +9,5 @@ event.disguise.success=§aDisguise applied ! event.disguise.fail=§cUnable to apply your disguise. §7§o({0}) event.undisguise.success=§aDisguise removed. event.undisguise.fail=§cUnable to remove your disguise. It will be set back to default on the next login. Sorry! -event.undisguise.notactive=§cYou do not have an active disguise. \ No newline at end of file +event.undisguise.notactive=§cYou do not have an active disguise. +error.invalid_username=§cThe specified username is not a valid Minecraft username. \ 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 ec152ee..4dc79f8 100644 --- a/nicko-core/src/main/resources/locale_fr.properties +++ b/nicko-core/src/main/resources/locale_fr.properties @@ -9,4 +9,5 @@ event.disguise.success=§aDéguisement appliqué ! event.disguise.fail=§cImpossible d'appliquer votre déguisement. §7§o({0}) event.undisguise.success=§aDéguisement retiré. event.undisguise.fail=§cImpossible de retier votre déguisement. Il sera remis par défaut à votre prochaine reconnexion. Désolé ! -event.undisguise.notactive=§cVous n'avez pas de déguisement. \ No newline at end of file +event.undisguise.notactive=§cVous n'avez pas de déguisement. +error.invalid_username=§cLe pseudo spécifié n'est pas un pseudo Minecraft valide. \ No newline at end of file