From 9a10ea2982b2bc8ae4b7cc7245814036872f1d1e Mon Sep 17 00:00:00 2001 From: aro Date: Wed, 14 Dec 2022 16:00:49 +0100 Subject: [PATCH] fix: profile skin npe --- v1_17_R1/src/main/java/net/artelnatif/nicko/impl/v1_17_R1.java | 3 ++- v1_18_R1/src/main/java/net/artelnatif/nicko/impl/v1_18_R1.java | 3 ++- v1_18_R2/src/main/java/net/artelnatif/nicko/impl/v1_18_R2.java | 3 ++- v1_19_R1/src/main/java/net/artelnatif/nicko/impl/v1_19_R1.java | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) 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 6f86140..2d8e0d1 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 @@ -85,6 +85,7 @@ public class v1_17_R1 implements Internals { public UpdateResult updateProfile(Player player, NickoProfile profile, boolean skinChange) { final CraftPlayer craftPlayer = (CraftPlayer) player; final EntityPlayer entityPlayer = craftPlayer.getHandle(); + final boolean changeOnlyName = profile.getSkin() != null && !profile.getSkin().equalsIgnoreCase(player.getName()); Optional skin; final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); @@ -93,7 +94,7 @@ public class v1_17_R1 implements Internals { final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); - if (skinChange || !profile.getSkin().equalsIgnoreCase(player.getName())) { + if (skinChange || changeOnlyName) { try { final Optional uuid = NickoBukkit.getInstance().getMojangAPI().getUUID(profile.getSkin()); if (uuid.isPresent()) { 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 0528e61..a6f45e6 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 @@ -87,6 +87,7 @@ public class v1_18_R1 implements Internals { public UpdateResult updateProfile(Player player, NickoProfile profile, boolean skinChange) { final CraftPlayer craftPlayer = (CraftPlayer) player; final EntityPlayer entityPlayer = craftPlayer.getHandle(); + final boolean changeOnlyName = profile.getSkin() != null && !profile.getSkin().equalsIgnoreCase(player.getName()); Optional skin; final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); @@ -95,7 +96,7 @@ public class v1_18_R1 implements Internals { final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); - if (skinChange || !profile.getSkin().equalsIgnoreCase(player.getName())) { + if (skinChange || changeOnlyName) { try { final Optional uuid = NickoBukkit.getInstance().getMojangAPI().getUUID(profile.getSkin()); if (uuid.isPresent()) { 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 3786512..52de8e3 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 @@ -87,6 +87,7 @@ public class v1_18_R2 implements Internals { public UpdateResult updateProfile(Player player, NickoProfile profile, boolean skinChange) { final CraftPlayer craftPlayer = (CraftPlayer) player; final EntityPlayer entityPlayer = craftPlayer.getHandle(); + final boolean changeOnlyName = profile.getSkin() != null && !profile.getSkin().equalsIgnoreCase(player.getName()); Optional skin; final PacketPlayOutPlayerInfo remove = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, entityPlayer); @@ -95,7 +96,7 @@ public class v1_18_R2 implements Internals { final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); - if (skinChange || !profile.getSkin().equalsIgnoreCase(player.getName())) { + if (skinChange || changeOnlyName) { try { final Optional uuid = NickoBukkit.getInstance().getMojangAPI().getUUID(profile.getSkin()); if (uuid.isPresent()) { 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 d05fa1c..8504293 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 @@ -89,6 +89,7 @@ public class v1_19_R1 implements Internals { public UpdateResult updateProfile(Player player, NickoProfile profile, boolean skinChange) { final CraftPlayer craftPlayer = (CraftPlayer) player; final EntityPlayer entityPlayer = craftPlayer.getHandle(); + final boolean changeOnlyName = profile.getSkin() != null && !profile.getSkin().equalsIgnoreCase(player.getName()); Optional skin; final PacketPlayOutPlayerInfo add = new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a); @@ -99,7 +100,7 @@ public class v1_19_R1 implements Internals { final ProfilePublicKey.a key = remove.b().get(0).e(); final GameProfile gameProfile = new GameProfile(player.getUniqueId(), profile.getName()); - if (skinChange || !profile.getSkin().equalsIgnoreCase(player.getName())) { + if (skinChange || changeOnlyName) { try { final Optional uuid = NickoBukkit.getInstance().getMojangAPI().getUUID(profile.getSkin()); if (uuid.isPresent()) {