From 0d6c8bb4db762171aa4466e1d26a2b285fdc23df Mon Sep 17 00:00:00 2001
From: T00thpick1 <t00thpick1dirko@gmail.com>
Date: Sat, 7 Mar 2015 20:54:33 -0600
Subject: [PATCH] Do not remove player in world change


diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
index c7d26ce..d93b00c 100644
--- a/src/main/java/net/minecraft/server/PlayerList.java
+++ b/src/main/java/net/minecraft/server/PlayerList.java
@@ -507,7 +507,7 @@ public abstract class PlayerList {
         entityplayer.u().getTracker().untrackPlayer(entityplayer);
         // entityplayer.u().getTracker().untrackEntity(entityplayer); // CraftBukkit
         entityplayer.u().getPlayerChunkMap().removePlayer(entityplayer);
-        this.players.remove(entityplayer);
+        //this.players.remove(entityplayer); // PaperSpigot - Don't remove player in world change. Fixes BUKKIT-4561, BUKKIT-4082, and BUKKIT-2094
         this.server.getWorldServer(entityplayer.dimension).removeEntity(entityplayer);
         BlockPosition blockposition = entityplayer.getBed();
         boolean flag1 = entityplayer.isRespawnForced();
@@ -601,7 +601,7 @@ public abstract class PlayerList {
 
         if (!entityplayer.playerConnection.isDisconnected()) {
             worldserver.getPlayerChunkMap().addPlayer(entityplayer1);
-            worldserver.addEntity(entityplayer1);
+            //worldserver.addEntity(entityplayer1); // PaperSpigot - Don't remove player in world change. Fixes BUKKIT-4561, BUKKIT-4082, and BUKKIT-2094
             this.players.add(entityplayer1);
             this.j.put(entityplayer1.getUniqueID(), entityplayer1);
         }
-- 
1.9.1