fix: npe on name change only

This commit is contained in:
aro 2022-12-05 18:13:40 +01:00
parent 93efcd2536
commit 451e1c4c95
3 changed files with 11 additions and 8 deletions

View file

@ -59,10 +59,10 @@ public class AnvilManager {
} else { } else {
appearanceManager.setName(response); appearanceManager.setName(response);
final UpdateResult updateResult = appearanceManager.updatePlayer(false); final UpdateResult updateResult = appearanceManager.updatePlayer(false);
if (updateResult.isError()) { if (!updateResult.isError()) {
player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS)); player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS));
} else { } 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(); return AnvilGUI.Response.close();
} }
@ -83,7 +83,7 @@ public class AnvilManager {
if (!updateResult.isError()) { if (!updateResult.isError()) {
player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS)); player.sendMessage(I18N.translate(player, I18NDict.Event.DISGUISE_SUCCESS));
} else { } 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(); return AnvilGUI.Response.close();
} }

View file

@ -43,6 +43,10 @@ public class AppearanceManager {
return profile.getSkin(); return profile.getSkin();
} }
public boolean needsASkinChange() {
return profile.getSkin() != null && !profile.getSkin().equals(player.getName());
}
public void setName(String name) { public void setName(String name) {
profile.setName(name); profile.setName(name);
} }

View file

@ -20,12 +20,11 @@ public class PlayerJoinListener implements Listener {
final AppearanceManager appearanceManager = AppearanceManager.get(player); final AppearanceManager appearanceManager = AppearanceManager.get(player);
if (appearanceManager.hasData()) { if (appearanceManager.hasData()) {
final boolean skinChange = !player.getName().equals(appearanceManager.getSkin()); final UpdateResult updateResult = appearanceManager.updatePlayer(appearanceManager.needsASkinChange());
final UpdateResult updateResult = appearanceManager.updatePlayer(skinChange); if (!updateResult.isError()) {
if (updateResult.isError()) {
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)); 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); }, 20L);