Fixed switching to non-self disguise freezing players
This commit is contained in:
		@@ -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<Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
 | 
			
		||||
                            .get(entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player));
 | 
			
		||||
                    ((Set<Object>) trackedPlayersObj).remove(ReflectionManager.getNmsEntity(player));
 | 
			
		||||
                } else {
 | 
			
		||||
                    ((Map<Object, Object>) 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<Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
 | 
			
		||||
                        .get(entityTrackerEntry)).add(ReflectionManager.getNmsEntity(player));
 | 
			
		||||
                ((Set<Object>) trackedPlayersObj).add(ReflectionManager.getNmsEntity(player));
 | 
			
		||||
            } else {
 | 
			
		||||
                ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap")
 | 
			
		||||
                        .get(entityTrackerEntry)).put(ReflectionManager.getNmsEntity(player), true);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user