summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTravis Watkins <amaranth@ubuntu.com>2012-09-28 14:53:28 -0500
committerTravis Watkins <amaranth@ubuntu.com>2012-09-28 14:53:28 -0500
commitb5580b6d95f025d72c117ebd28082c12c1c7a77c (patch)
treeac6a3ca66f1f4bd2788836e9aba2921e83191c3c
parent244a39d2097248881a6e3caa63e443bb308290d7 (diff)
downloadcraftbukkit-b5580b6d95f025d72c117ebd28082c12c1c7a77c.tar
craftbukkit-b5580b6d95f025d72c117ebd28082c12c1c7a77c.tar.gz
craftbukkit-b5580b6d95f025d72c117ebd28082c12c1c7a77c.tar.lz
craftbukkit-b5580b6d95f025d72c117ebd28082c12c1c7a77c.tar.xz
craftbukkit-b5580b6d95f025d72c117ebd28082c12c1c7a77c.zip
Remove player from destroy queue when they go visible. Fixes BUKKIT-2071
If a plugin calls player.hidePlayer(other); then player.showPlayer(other); in the same tick the other player will be added to the entity destroy queue then a spawn packet will be sent. On the next tick the queue will be processed and a destroy packet will be sent that renders the other player invisible. To correct this we ensure the destroy queue is in sync with use of the vanish API.
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
index 4e6dfb5c..1b88232b 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
@@ -631,6 +631,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
EntityTracker tracker = ((WorldServer) entity.world).tracker;
EntityPlayer other = ((CraftPlayer) player).getHandle();
EntityTrackerEntry entry = (EntityTrackerEntry) tracker.trackedEntities.get(other.id);
+ getHandle().g.remove(Integer.valueOf(other.id)); // Should be called destroyQueue
if (entry != null && !entry.trackedPlayers.contains(getHandle())) {
entry.updatePlayer(getHandle());
}