diff options
author | Travis Watkins <amaranth@ubuntu.com> | 2012-02-09 20:08:00 -0600 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-02-09 22:03:43 -0500 |
commit | 7ff8c175686cb0df980b3d0196052624fe8ccc21 (patch) | |
tree | 97afea3605d181136361954468d82f93ff8e9696 /src/main | |
parent | d8ca2401ff07cc2d717a95d36ee4099c447a634e (diff) | |
download | craftbukkit-7ff8c175686cb0df980b3d0196052624fe8ccc21.tar craftbukkit-7ff8c175686cb0df980b3d0196052624fe8ccc21.tar.gz craftbukkit-7ff8c175686cb0df980b3d0196052624fe8ccc21.tar.lz craftbukkit-7ff8c175686cb0df980b3d0196052624fe8ccc21.tar.xz craftbukkit-7ff8c175686cb0df980b3d0196052624fe8ccc21.zip |
[Bleeding] Make sure we don't keep stale references to vanished players.
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index ead6a430..7cca8b1d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1,6 +1,7 @@ package org.bukkit.craftbukkit.entity; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.MapMaker; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.InetSocketAddress; @@ -36,7 +37,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private long lastPlayed = 0; private boolean hasPlayedBefore = false; private Set<String> channels = new HashSet<String>(); - private Set<Player> hiddenPlayers = new HashSet<Player>(); + private Map<String, Player> hiddenPlayers = new MapMaker().softValues().makeMap(); private int hash = 0; public CraftPlayer(CraftServer server, EntityPlayer entity) { @@ -564,8 +565,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void hidePlayer(Player player) { - if (hiddenPlayers.contains(player)) return; - hiddenPlayers.add(player); + if (hiddenPlayers.containsKey(player.getName())) return; + hiddenPlayers.put(player.getName(), player); //remove this player from the hidden player's EntityTrackerEntry EntityTracker tracker = ((WorldServer) entity.world).tracker; @@ -580,8 +581,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public void showPlayer(Player player) { - if (!hiddenPlayers.contains(player)) return; - hiddenPlayers.remove(player); + if (!hiddenPlayers.containsKey(player.getName())) return; + hiddenPlayers.remove(player.getName()); EntityTracker tracker = ((WorldServer) entity.world).tracker; EntityPlayer other = ((CraftPlayer) player).getHandle(); @@ -594,7 +595,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } public boolean canSee(Player player) { - return !hiddenPlayers.contains(player); + return !hiddenPlayers.containsKey(player.getName()); } public Map<String, Object> serialize() { |