From 0981a0a88a9ef4c3a69af0b67fe4db3cedf1ddf9 Mon Sep 17 00:00:00 2001 From: Andrew Date: Thu, 1 Aug 2013 19:56:27 +1200 Subject: [PATCH] Player is no longer invisible to himself when undisguising --- .../libraryaddict/disguise/DisguiseAPI.java | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/src/me/libraryaddict/disguise/DisguiseAPI.java b/src/me/libraryaddict/disguise/DisguiseAPI.java index 4f574e09..8090c429 100644 --- a/src/me/libraryaddict/disguise/DisguiseAPI.java +++ b/src/me/libraryaddict/disguise/DisguiseAPI.java @@ -61,13 +61,13 @@ import com.comphenix.protocol.reflect.StructureModifier; public class DisguiseAPI { private static HashMap disguises = new HashMap(); + private static boolean hearSelfDisguise; private static LibsDisguises libsDisguises; private static PacketListener packetListener; + private static HashMap selfDisguisesIds = new HashMap(); private static boolean sendVelocity; private static boolean soundsEnabled; - private static HashMap selfDisguisesIds = new HashMap(); private static boolean viewDisguises; - private static boolean hearSelfDisguise; private static PacketListener viewDisguisesListener; private synchronized static Disguise access(Entity entity, Disguise... args) { @@ -83,6 +83,10 @@ public class DisguiseAPI { return null; } + public static boolean canHearSelfDisguise() { + return hearSelfDisguise; + } + /** * @param Player * - The player to disguise @@ -124,16 +128,6 @@ public class DisguiseAPI { } } - public static void setHearSelfDisguise(boolean replaceSound) { - if (hearSelfDisguise != replaceSound) { - hearSelfDisguise = replaceSound; - } - } - - public static boolean canHearSelfDisguise() { - return hearSelfDisguise; - } - private static Disguise get(Entity obj) { return access(obj); } @@ -452,12 +446,27 @@ public class DisguiseAPI { ex.printStackTrace(); } selfDisguisesIds.remove(player.getEntityId()); + EntityPlayer entityplayer = ((CraftPlayer) player).getHandle(); + EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities + .get(player.getEntityId()); + if (tracker != null) { + tracker.trackedPlayers.remove(entityplayer); + } + PacketContainer packetMetadata = new PacketContainer(Packets.Server.ENTITY_METADATA); + StructureModifier mods = packetMetadata.getModifier(); + mods.write(0, player.getEntityId()); + mods.write(1, entityplayer.getDataWatcher().c()); + try { + ProtocolLibrary.getProtocolManager().sendServerPacket(player, packetMetadata); + } catch (Exception ex) { + ex.printStackTrace(); + } } - EntityPlayer entityplayer = ((CraftPlayer) player).getHandle(); - EntityTrackerEntry tracker = (EntityTrackerEntry) ((WorldServer) entityplayer.world).tracker.trackedEntities.get(player - .getEntityId()); - if (tracker != null) { - tracker.trackedPlayers.remove(entityplayer); + } + + public static void setHearSelfDisguise(boolean replaceSound) { + if (hearSelfDisguise != replaceSound) { + hearSelfDisguise = replaceSound; } }