summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorTravis Watkins <amaranth@ubuntu.com>2012-02-09 20:08:00 -0600
committerEvilSeph <evilseph@gmail.com>2012-02-09 22:03:43 -0500
commit7ff8c175686cb0df980b3d0196052624fe8ccc21 (patch)
tree97afea3605d181136361954468d82f93ff8e9696 /src/main
parentd8ca2401ff07cc2d717a95d36ee4099c447a634e (diff)
downloadcraftbukkit-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.java13
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() {