fix: better error handling

This commit is contained in:
aro 2022-12-14 16:19:13 +01:00
parent 9a10ea2982
commit 863aa46a7b
8 changed files with 28 additions and 18 deletions

View file

@ -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();
}

View file

@ -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();
}
}
}

View file

@ -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.

View file

@ -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.

View file

@ -89,8 +89,6 @@ public class v1_17_R1 implements Internals {
Optional<MojangSkin> 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 -> {

View file

@ -91,8 +91,6 @@ public class v1_18_R1 implements Internals {
Optional<MojangSkin> 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 -> {

View file

@ -91,8 +91,6 @@ public class v1_18_R2 implements Internals {
Optional<MojangSkin> 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 -> {

View file

@ -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();