diff options
author | Travis Watkins <amaranth@ubuntu.com> | 2014-03-22 19:25:55 -0500 |
---|---|---|
committer | Travis Watkins <amaranth@ubuntu.com> | 2014-03-22 19:39:03 -0500 |
commit | 019a33f50d3f0d34d5824bfd89688355ca4005b5 (patch) | |
tree | ea36116ea485a2255a8b2ba0def0d0fa0fb7d8d0 /src/main/java/net/minecraft/server/PlayerList.java | |
parent | 4873b12890e7af0c7137c3cb25853d6e20361cd4 (diff) | |
download | craftbukkit-019a33f50d3f0d34d5824bfd89688355ca4005b5.tar craftbukkit-019a33f50d3f0d34d5824bfd89688355ca4005b5.tar.gz craftbukkit-019a33f50d3f0d34d5824bfd89688355ca4005b5.tar.lz craftbukkit-019a33f50d3f0d34d5824bfd89688355ca4005b5.tar.xz craftbukkit-019a33f50d3f0d34d5824bfd89688355ca4005b5.zip |
Fix teleport failing right after join. Fixes BUKKIT-5479
Teleporting a player checks to see if the player is disconnected to
try to avoid creating ghost players. The check it uses, however, randomly
fails when the player is in the middle of joining the server. The check
that would work correctly here does not work correctly when the player
actually disconnects. To work around this we add a new flag which is
cleared on the first tick of the new player and assume they are connected
if the flag is set.
Diffstat (limited to 'src/main/java/net/minecraft/server/PlayerList.java')
-rw-r--r-- | src/main/java/net/minecraft/server/PlayerList.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java index 1943dbf0..5b0590e7 100644 --- a/src/main/java/net/minecraft/server/PlayerList.java +++ b/src/main/java/net/minecraft/server/PlayerList.java @@ -83,8 +83,8 @@ public abstract class PlayerList { s = networkmanager.getSocketAddress().toString(); } - // CraftBukkit - add world to 'logged in' message. - c.info(entityplayer.getName() + "[" + s + "] logged in with entity id " + entityplayer.getId() + " at ([" + entityplayer.world.worldData.getName() + "] " + entityplayer.locX + ", " + entityplayer.locY + ", " + entityplayer.locZ + ")"); + // CraftBukkit - Moved message to after join + // c.info(entityplayer.getName() + "[" + s + "] logged in with entity id " + entityplayer.getId() + " at (" + entityplayer.locX + ", " + entityplayer.locY + ", " + entityplayer.locZ + ")"); WorldServer worldserver = this.server.getWorldServer(entityplayer.dimension); ChunkCoordinates chunkcoordinates = worldserver.getSpawn(); @@ -114,6 +114,7 @@ public abstract class PlayerList { this.sendMessage(chatmessage); // CraftBukkit end*/ this.c(entityplayer); + worldserver = this.server.getWorldServer(entityplayer.dimension); // CraftBukkit - Update in case join event changed it playerconnection.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch); this.b(entityplayer, worldserver); if (this.server.getResourcePack().length() > 0) { @@ -139,6 +140,9 @@ public abstract class PlayerList { entity.n = false; } } + + // CraftBukkit - Moved from above, added world + c.info(entityplayer.getName() + "[" + s + "] logged in with entity id " + entityplayer.getId() + " at ([" + entityplayer.world.worldData.getName() + "] " + entityplayer.locX + ", " + entityplayer.locY + ", " + entityplayer.locZ + ")"); } public void a(ScoreboardServer scoreboardserver, EntityPlayer entityplayer) { // CraftBukkit - protected -> public |