From d039986be7d79b1edb706f15d77c6a94ca7041a9 Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Mon, 19 Nov 2012 21:38:31 -0600 Subject: [PATCH] No teleporting people back into the server. Fixes BUKKIT-2298 Stale player references will add a player back into the world when teleporting them, causing a cascade of issues relating to ghost entities and servers failing to stop. --- src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index a1e9f85cd9..46db36cc8e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -345,7 +345,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean teleport(Location location, PlayerTeleportEvent.TeleportCause cause) { - if (getHandle().netServerHandler == null) return false; + EntityPlayer entity = getHandle(); + if (entity.netServerHandler == null || entity.netServerHandler.disconnected) return false; // From = Players current Location Location from = this.getLocation(); @@ -365,8 +366,6 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Grab the To and From World Handles. WorldServer fromWorld = ((CraftWorld) from.getWorld()).getHandle(); WorldServer toWorld = ((CraftWorld) to.getWorld()).getHandle(); - // Grab the EntityPlayer - EntityPlayer entity = getHandle(); // Check if the fromWorld and toWorld are the same. if (fromWorld == toWorld) {