From 863aa46a7b4dc396323f224db5305e87ab9b839d Mon Sep 17 00:00:00 2001 From: aro Date: Wed, 14 Dec 2022 16:19:13 +0100 Subject: [PATCH] fix: better error handling --- .../net/artelnatif/nicko/anvil/AnvilManager.java | 4 ++-- .../main/java/net/artelnatif/nicko/i18n/I18N.java | 13 +++++++++++++ nicko-core/src/main/resources/locale_en.properties | 8 ++++---- nicko-core/src/main/resources/locale_fr.properties | 8 ++++---- .../java/net/artelnatif/nicko/impl/v1_17_R1.java | 3 +-- .../java/net/artelnatif/nicko/impl/v1_18_R1.java | 3 +-- .../java/net/artelnatif/nicko/impl/v1_18_R2.java | 3 +-- .../java/net/artelnatif/nicko/impl/v1_19_R1.java | 4 ++-- 8 files changed, 28 insertions(+), 18 deletions(-) diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java b/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java index 571e44c..e4b02ae 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/anvil/AnvilManager.java @@ -62,7 +62,7 @@ public class AnvilManager { if (!updateResult.isError()) { player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS)); } else { - player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, updateResult.getErrorMessage())); + player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, I18N.translateFlat(player, updateResult.getErrorMessage()))); } return AnvilGUI.Response.close(); } @@ -83,7 +83,7 @@ public class AnvilManager { if (!updateResult.isError()) { player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS)); } else { - player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, updateResult.getErrorMessage())); + player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, I18N.translateFlat(player, updateResult.getErrorMessage()))); } return AnvilGUI.Response.close(); } 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 0655c06..478e115 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 @@ -42,4 +42,17 @@ public class I18N { return NickoBukkit.getInstance().getNickoConfig().getPrefix() + key.key(); } } + + public static String translateFlat(Player player, I18NDict key, Object... arguments) { + if (Locale.getDefault() == Locale.CUSTOM) { + // TODO: 12/6/22 Actually return from custom language file + return key.key(); + } + try { + formatter.applyPattern(getBundle(player).getString(key.key())); + return formatter.format(arguments); + } catch (Exception e) { + return key.key(); + } + } } diff --git a/nicko-core/src/main/resources/locale_en.properties b/nicko-core/src/main/resources/locale_en.properties index 307f1a1..682ed32 100644 --- a/nicko-core/src/main/resources/locale_en.properties +++ b/nicko-core/src/main/resources/locale_en.properties @@ -6,8 +6,8 @@ event.undisguise.success=§aDisguise removed. event.undisguise.fail=§cUnable to remove your disguise. It will be set back to default on your next login. Sorry! event.undisguise.notactive=§cYou do not have an active disguise. error.player_offline=§c{0} §fis offline, please try again. -error.generic=§cAn unknown error occured. Please contact the developer. -error.couldnt_get_name_from_mojang=§cFailed to get username from Mojang. Does the user exists? -error.couldnt_get_skin_from_mojang=§cFailed to get skin from Mojang. -error.couldnt_get_skin_from_cache=§cFailed to get skin from cache. +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 diff --git a/nicko-core/src/main/resources/locale_fr.properties b/nicko-core/src/main/resources/locale_fr.properties index 8208035..3acc650 100644 --- a/nicko-core/src/main/resources/locale_fr.properties +++ b/nicko-core/src/main/resources/locale_fr.properties @@ -6,8 +6,8 @@ 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. error.player_offline=§c{0} §fest hors-ligne, veuillez réessayer. -error.generic=§cUne erreur inconnue est survenue. Veuillez contacter le développeur. -error.couldnt_get_name_from_mojang=§cImpossible de récupérer le nom d'utilisateur depuis Mojang. Cet utilisateur existe-il? -error.couldnt_get_skin_from_mojang=§cImpossible de récupérer le skin depuis Mojang. -error.couldnt_get_skin_from_cache=§cImpossible de récupérer le skin depuis le cache. +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 diff --git a/v1_17_R1/src/main/java/net/artelnatif/nicko/impl/v1_17_R1.java b/v1_17_R1/src/main/java/net/artelnatif/nicko/impl/v1_17_R1.java index 2d8e0d1..06307b0 100644 --- a/v1_17_R1/src/main/java/net/artelnatif/nicko/impl/v1_17_R1.java +++ b/v1_17_R1/src/main/java/net/artelnatif/nicko/impl/v1_17_R1.java @@ -89,8 +89,6 @@ public class v1_17_R1 implements Internals { Optional skin; final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); - entityPlayer.b.sendPacket(remove); - final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); @@ -120,6 +118,7 @@ public class v1_17_R1 implements Internals { add.b().add(new PacketPlayOutPlayerInfo.PlayerInfoData(gameProfile, player.getPing(), EnumGamemode.getById(player.getGameMode().ordinal()), IChatBaseComponent.a(profile.getName()))); + entityPlayer.b.sendPacket(remove); entityPlayer.b.sendPacket(add); Bukkit.getOnlinePlayers().forEach(online -> { diff --git a/v1_18_R1/src/main/java/net/artelnatif/nicko/impl/v1_18_R1.java b/v1_18_R1/src/main/java/net/artelnatif/nicko/impl/v1_18_R1.java index a6f45e6..7a00562 100644 --- a/v1_18_R1/src/main/java/net/artelnatif/nicko/impl/v1_18_R1.java +++ b/v1_18_R1/src/main/java/net/artelnatif/nicko/impl/v1_18_R1.java @@ -91,8 +91,6 @@ public class v1_18_R1 implements Internals { Optional skin; final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); - entityPlayer.b.a(remove); - final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); @@ -122,6 +120,7 @@ public class v1_18_R1 implements Internals { add.b().add(new PacketPlayOutPlayerInfo.PlayerInfoData(gameProfile, player.getPing(), EnumGamemode.a(player.getGameMode().ordinal()), IChatBaseComponent.a(profile.getName()))); + entityPlayer.b.a(remove); entityPlayer.b.a(add); Bukkit.getOnlinePlayers().forEach(online -> { diff --git a/v1_18_R2/src/main/java/net/artelnatif/nicko/impl/v1_18_R2.java b/v1_18_R2/src/main/java/net/artelnatif/nicko/impl/v1_18_R2.java index 52de8e3..2e05f18 100644 --- a/v1_18_R2/src/main/java/net/artelnatif/nicko/impl/v1_18_R2.java +++ b/v1_18_R2/src/main/java/net/artelnatif/nicko/impl/v1_18_R2.java @@ -91,8 +91,6 @@ public class v1_18_R2 implements Internals { Optional skin; final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); - entityPlayer.b.a(remove); - final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); @@ -122,6 +120,7 @@ public class v1_18_R2 implements Internals { add.b().add(new PacketPlayOutPlayerInfo.PlayerInfoData(gameProfile, player.getPing(), EnumGamemode.a(player.getGameMode().ordinal()), IChatBaseComponent.a(profile.getName()))); + entityPlayer.b.a(remove); entityPlayer.b.a(add); Bukkit.getOnlinePlayers().forEach(online -> { diff --git a/v1_19_R1/src/main/java/net/artelnatif/nicko/impl/v1_19_R1.java b/v1_19_R1/src/main/java/net/artelnatif/nicko/impl/v1_19_R1.java index 8504293..f138d50 100644 --- a/v1_19_R1/src/main/java/net/artelnatif/nicko/impl/v1_19_R1.java +++ b/v1_19_R1/src/main/java/net/artelnatif/nicko/impl/v1_19_R1.java @@ -94,7 +94,6 @@ public class v1_19_R1 implements Internals { final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); - entityPlayer.b.a(remove); // "It's a Surprise Tool That Will Help Us Later!" final ProfilePublicKey.a key = remove.b().get(0).e(); @@ -118,7 +117,7 @@ public class v1_19_R1 implements Internals { } catch (ExecutionException e) { return new UpdateResult(I18NDict.Error.SKIN_FAIL_CACHE); } catch (IOException e) { - return new UpdateResult(I18NDict.Error.UNEXPECTED_ERROR); + return new UpdateResult(I18NDict.Error.NAME_FAIL_MOJANG); } } @@ -130,6 +129,7 @@ public class v1_19_R1 implements Internals { IChatBaseComponent.a(profile.getName()), key)); // f mojang + entityPlayer.b.a(remove); entityPlayer.b.a(add); Bukkit.getOnlinePlayers().forEach(online -> { EntityPlayer onlineEntityPlayer = ((CraftPlayer) online).getHandle();