From 0c4262a6ff529926c2aa8dc215d3a4b21568c231 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Tue, 13 Aug 2019 20:32:13 +1200 Subject: [PATCH] Fixed switching to non-self disguise freezing players --- .../disguise/utilities/DisguiseUtilities.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java b/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java index 940e86f0..2e9831cf 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java @@ -1132,7 +1132,6 @@ public class DisguiseUtilities { return; } - PacketContainer destroyPacket = getDestroyPacket(disguise.getEntity().getEntityId()); try { if (selfDisguised.contains(disguise.getEntity().getUniqueId()) && disguise.isDisguiseInUse()) { @@ -1140,6 +1139,8 @@ public class DisguiseUtilities { selfDisguised.add(disguise.getEntity().getUniqueId()); + PacketContainer destroyPacket = getDestroyPacket(DisguiseAPI.getSelfDisguiseId()); + ProtocolLibrary.getProtocolManager().sendServerPacket((Player) disguise.getEntity(), destroyPacket); Bukkit.getScheduler().scheduleSyncDelayedTask(LibsDisguises.getInstance(), () -> { @@ -1165,6 +1166,7 @@ public class DisguiseUtilities { .getNmsMethod("EntityTrackerEntry", "b", ReflectionManager.getNmsClass("EntityPlayer")); trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); + PacketContainer destroyPacket = getDestroyPacket(disguise.getEntity().getEntityId()); for (final Object p : trackedPlayers) { Player player = (Player) ReflectionManager.getBukkitEntity(p); @@ -1256,8 +1258,7 @@ public class DisguiseUtilities { // If the tracker exists. Remove himself from his tracker if (isHashSet(trackedPlayersObj)) { - ((Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") - .get(entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player)); + ((Set) trackedPlayersObj).remove(ReflectionManager.getNmsEntity(player)); } else { ((Map) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap") .get(entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player)); @@ -1548,8 +1549,7 @@ public class DisguiseUtilities { // Check for code differences in PaperSpigot vs Spigot if (isHashSet(trackedPlayersObj)) { - ((Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") - .get(entityTrackerEntry)).add(ReflectionManager.getNmsEntity(player)); + ((Set) trackedPlayersObj).add(ReflectionManager.getNmsEntity(player)); } else { ((Map) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap") .get(entityTrackerEntry)).put(ReflectionManager.getNmsEntity(player), true);