From 451e1c4c954401d29839a68af2db9cbfb2d6fd86 Mon Sep 17 00:00:00 2001 From: aro Date: Mon, 5 Dec 2022 18:13:40 +0100 Subject: [PATCH] fix: npe on name change only --- .../java/net/artelnatif/nicko/anvil/AnvilManager.java | 6 +++--- .../net/artelnatif/nicko/disguise/AppearanceManager.java | 4 ++++ .../net/artelnatif/nicko/event/PlayerJoinListener.java | 9 ++++----- 3 files changed, 11 insertions(+), 8 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 5504ef0..571e44c 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 @@ -59,10 +59,10 @@ public class AnvilManager { } else { appearanceManager.setName(response); final UpdateResult updateResult = appearanceManager.updatePlayer(false); - if (updateResult.isError()) { + if (!updateResult.isError()) { player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS)); } else { - player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL)); + player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, 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)); + player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_FAIL, updateResult.getErrorMessage())); } return AnvilGUI.Response.close(); } diff --git a/nicko-core/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java b/nicko-core/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java index 0ced622..416c16c 100644 --- a/nicko-core/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java +++ b/nicko-core/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java @@ -43,6 +43,10 @@ public class AppearanceManager { return profile.getSkin(); } + public boolean needsASkinChange() { + return profile.getSkin() != null && !profile.getSkin().equals(player.getName()); + } + public void setName(String name) { profile.setName(name); } 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 79ecc5f..670997f 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 @@ -20,12 +20,11 @@ public class PlayerJoinListener implements Listener { final AppearanceManager appearanceManager = AppearanceManager.get(player); if (appearanceManager.hasData()) { - 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, I18N.translate(player, updateResult.getErrorMessage()))); - } else { + final UpdateResult updateResult = appearanceManager.updatePlayer(appearanceManager.needsASkinChange()); + if (!updateResult.isError()) { player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLIED)); + } else { + player.sendMessage(I18N.translate(player, I18NDict.Event.PREVIOUS_SKIN_APPLY_FAIL, I18N.translate(player, updateResult.getErrorMessage()))); } } }, 20L);