Send self disguise in the same tracker refresh entry..

This commit is contained in:
libraryaddict 2014-06-21 07:58:37 +12:00
parent bd317b4cce
commit 992e416edf
2 changed files with 8 additions and 11 deletions

@ -3,7 +3,6 @@ package me.libraryaddict.disguise.disguisetypes;
import java.util.UUID; import java.util.UUID;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.entity.Player;
import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.comphenix.protocol.wrappers.WrappedGameProfile;
@ -102,9 +101,6 @@ public class PlayerDisguise extends TargetedDisguise {
setSkin(gameProfile); setSkin(gameProfile);
if (DisguiseUtilities.isDisguiseInUse(PlayerDisguise.this)) { if (DisguiseUtilities.isDisguiseInUse(PlayerDisguise.this)) {
DisguiseUtilities.refreshTrackers(PlayerDisguise.this); DisguiseUtilities.refreshTrackers(PlayerDisguise.this);
if (getEntity() instanceof Player && isSelfDisguiseVisible()) {
DisguiseUtilities.sendSelfDisguise((Player) getEntity(), PlayerDisguise.this);
}
} }
} }
} }

@ -345,9 +345,6 @@ public class DisguiseUtilities {
} }
if (DisguiseAPI.isDisguiseInUse(disguise)) { if (DisguiseAPI.isDisguiseInUse(disguise)) {
DisguiseUtilities.refreshTrackers(disguise); DisguiseUtilities.refreshTrackers(disguise);
if (disguise.getEntity() instanceof Player && disguise.isSelfDisguiseVisible()) {
DisguiseUtilities.sendSelfDisguise((Player) disguise.getEntity(), disguise);
}
} }
} }
}); });
@ -518,6 +515,9 @@ public class DisguiseUtilities {
*/ */
public static void refreshTrackers(TargetedDisguise disguise) { public static void refreshTrackers(TargetedDisguise disguise) {
try { try {
if (disguise.isDisguiseInUse() && disguise.getEntity() instanceof Player) {
DisguiseUtilities.sendSelfDisguise((Player) disguise.getEntity(), disguise);
}
Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity()); Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity());
if (entityTrackerEntry != null) { if (entityTrackerEntry != null) {
HashSet trackedPlayers = (HashSet) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( HashSet trackedPlayers = (HashSet) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(
@ -532,7 +532,7 @@ public class DisguiseUtilities {
// if (entity instanceof Player && !((Player) ReflectionManager.getBukkitEntity(player)).canSee((Player) // if (entity instanceof Player && !((Player) ReflectionManager.getBukkitEntity(player)).canSee((Player)
// entity)) // entity))
// continue; // continue;
if (player == disguise.getEntity() || disguise.canSee(player.getName())) { if (disguise.canSee(player.getName())) {
clear.invoke(entityTrackerEntry, p); clear.invoke(entityTrackerEntry, p);
updatePlayer.invoke(entityTrackerEntry, p); updatePlayer.invoke(entityTrackerEntry, p);
} }
@ -609,9 +609,10 @@ public class DisguiseUtilities {
/** /**
* Sends the self disguise to the player * Sends the self disguise to the player
*/ */
public static void sendSelfDisguise(final Player player, final Disguise disguise) { public static void sendSelfDisguise(final Player player, final TargetedDisguise disguise) {
try { try {
if (!player.isValid() || !player.isOnline() || !disguise.isSelfDisguiseVisible()) { if (!disguise.isDisguiseInUse() || !player.isValid() || !player.isOnline() || !disguise.isSelfDisguiseVisible()
|| !disguise.canSee(player)) {
return; return;
} }
Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(player); Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(player);
@ -748,7 +749,7 @@ public class DisguiseUtilities {
return; return;
} }
selfDisguised.add(player.getUniqueId()); selfDisguised.add(player.getUniqueId());
sendSelfDisguise(player, disguise); sendSelfDisguise(player, (TargetedDisguise) disguise);
if (disguise.isHidingArmorFromSelf() || disguise.isHidingHeldItemFromSelf()) { if (disguise.isHidingArmorFromSelf() || disguise.isHidingHeldItemFromSelf()) {
if (PacketsManager.isInventoryListenerEnabled()) { if (PacketsManager.isInventoryListenerEnabled()) {
player.updateInventory(); player.updateInventory();