Paper experimental fix
This commit is contained in:
		@@ -86,6 +86,7 @@ public class DisguiseUtilities {
 | 
			
		||||
    private static long velocityTime;
 | 
			
		||||
    private static int velocityID;
 | 
			
		||||
    private static HashMap<UUID, ArrayList<Integer>> disguiseLoading = new HashMap<>();
 | 
			
		||||
    private static boolean runningPaper = Bukkit.getServer().getBukkitVersion().contains("Paper");
 | 
			
		||||
 | 
			
		||||
    public static void setPlayerVelocity(Player player) {
 | 
			
		||||
        velocityID = player.getEntityId();
 | 
			
		||||
@@ -736,22 +737,6 @@ public class DisguiseUtilities {
 | 
			
		||||
        }, LibsDisguises.getInstance().getConfig().getBoolean("ContactMojangServers", true));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Pass in a set, check if it's a hashset. If it's not, return false. If you pass in something else, you failed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param obj
 | 
			
		||||
     * @return
 | 
			
		||||
     */
 | 
			
		||||
    private static boolean isHashSet(Object obj) {
 | 
			
		||||
        if (obj instanceof HashSet)
 | 
			
		||||
            return true; // It's Spigot/Bukkit
 | 
			
		||||
 | 
			
		||||
        if (obj instanceof Set)
 | 
			
		||||
            return false; // It's PaperSpigot/SportsBukkit
 | 
			
		||||
 | 
			
		||||
        throw new IllegalArgumentException("Object passed was not either a hashset or set!");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Thread safe to use. This returns a GameProfile. And if its GameProfile doesn't have a skin blob. Then it does
 | 
			
		||||
     * a lookup
 | 
			
		||||
@@ -1255,11 +1240,12 @@ public class DisguiseUtilities {
 | 
			
		||||
            Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(player);
 | 
			
		||||
 | 
			
		||||
            if (entityTrackerEntry != null) {
 | 
			
		||||
                Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
 | 
			
		||||
                        .get(entityTrackerEntry);
 | 
			
		||||
 | 
			
		||||
                // If the tracker exists. Remove himself from his tracker
 | 
			
		||||
                if (isHashSet(trackedPlayersObj)) {
 | 
			
		||||
                if (runningPaper) {
 | 
			
		||||
                    Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
 | 
			
		||||
                            .get(entityTrackerEntry);
 | 
			
		||||
 | 
			
		||||
                    ((Set<Object>) trackedPlayersObj).remove(ReflectionManager.getNmsEntity(player));
 | 
			
		||||
                } else {
 | 
			
		||||
                    ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap")
 | 
			
		||||
@@ -1545,12 +1531,12 @@ public class DisguiseUtilities {
 | 
			
		||||
 | 
			
		||||
            setupSelfDisguiseScoreboard(player);
 | 
			
		||||
 | 
			
		||||
            // Add himself to his own entity tracker
 | 
			
		||||
            Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
 | 
			
		||||
                    .get(entityTrackerEntry);
 | 
			
		||||
 | 
			
		||||
            // Check for code differences in PaperSpigot vs Spigot
 | 
			
		||||
            if (isHashSet(trackedPlayersObj)) {
 | 
			
		||||
            if (runningPaper) {
 | 
			
		||||
                // Add himself to his own entity tracker
 | 
			
		||||
                Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
 | 
			
		||||
                        .get(entityTrackerEntry);
 | 
			
		||||
 | 
			
		||||
                ((Set<Object>) trackedPlayersObj).add(ReflectionManager.getNmsEntity(player));
 | 
			
		||||
            } else {
 | 
			
		||||
                ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user