aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorZach Brown <[email protected]>2017-03-17 00:04:34 -0500
committerZach Brown <[email protected]>2017-03-17 00:09:26 -0500
commit08aa6e5f49c9ceee3290bbe457998c0030d8ca7d (patch)
tree5e5a8ed7383ec4d3da2135b35efefee047b21af0
parent45ad47717e9facc2948dbae200b5b90bb4895118 (diff)
downloadPaper-08aa6e5f49c9ceee3290bbe457998c0030d8ca7d.tar.gz
Paper-08aa6e5f49c9ceee3290bbe457998c0030d8ca7d.zip
Make sure the entity is still added to the world
-rw-r--r--Spigot-Server-Patches/0213-Fix-a-duplicate-alive-entity-on-second-world.patch69
1 files changed, 52 insertions, 17 deletions
diff --git a/Spigot-Server-Patches/0213-Fix-a-duplicate-alive-entity-on-second-world.patch b/Spigot-Server-Patches/0213-Fix-a-duplicate-alive-entity-on-second-world.patch
index fe8013f4bf..9eb89c50ba 100644
--- a/Spigot-Server-Patches/0213-Fix-a-duplicate-alive-entity-on-second-world.patch
+++ b/Spigot-Server-Patches/0213-Fix-a-duplicate-alive-entity-on-second-world.patch
@@ -1,30 +1,65 @@
-From f2f4e3a3406b40e13a7dc05cc5dbaeda8038043a Mon Sep 17 00:00:00 2001
+From ceabaae622b6af7225c9f35e188275dbe759acd6 Mon Sep 17 00:00:00 2001
From: Shane Freeder <[email protected]>
Date: Fri, 17 Mar 2017 01:45:15 +0000
Subject: [PATCH] Fix a duplicate alive entity on second world
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 0e1d9817..4cabdd7a 100644
+index 0e1d9817..92ba4fcb 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -2359,6 +2359,7 @@ public abstract class Entity implements ICommandListener {
+@@ -2325,7 +2325,7 @@ public abstract class Entity implements ICommandListener {
// CraftBukkit end */
- // CraftBukkit start - Ensure chunks are loaded in case TravelAgent is not used which would initially cause chunks to load during find/create
- // minecraftserver.getPlayerList().changeWorld(this, j, worldserver, worldserver1);
-+ this.dead = true; // Paper - Mark entity as dead before we actually move it to the new world
- worldserver1.getMinecraftServer().getPlayerList().repositionEntity(this, exit, portal);
- // worldserver.entityJoinedWorld(this, false); // Handled in repositionEntity
- // CraftBukkit end
-@@ -2393,7 +2394,7 @@ public abstract class Entity implements ICommandListener {
- // CraftBukkit end
- }
-- this.dead = true;
-+ //this.dead = true; // Paper - Moved this up to ensure that the entity is dead when it's placed on the new world
- this.world.methodProfiler.b();
- worldserver.m();
- worldserver1.m();
+ this.world.kill(this);
+- this.dead = false;
++ //this.dead = false; // Paper - Mark entity as dead before we actually move it to the new world
+ this.world.methodProfiler.a("reposition");
+ /* CraftBukkit start - Handled in calculateTarget
+ BlockPosition blockposition;
+diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
+index a9d59bbf..a83a3054 100644
+--- a/src/main/java/net/minecraft/server/PlayerList.java
++++ b/src/main/java/net/minecraft/server/PlayerList.java
+@@ -803,7 +803,7 @@ public abstract class PlayerList {
+ entityplayer.playerConnection.sendPacket(new PacketPlayOutRespawn(entityplayer.dimension, entityplayer.world.getDifficulty(), entityplayer.world.getWorldData().getType(), entityplayer.playerInteractManager.getGameMode()));
+ this.f(entityplayer);
+ worldserver.removeEntity(entityplayer);
+- entityplayer.dead = false;
++ //entityplayer.dead = false; // Paper - He's dead jim - Handle players the same way we do all entities
+ this.changeWorld(entityplayer, j, worldserver, worldserver1);
+ this.a(entityplayer, worldserver);
+ entityplayer.playerConnection.a(entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
+@@ -923,9 +923,9 @@ public abstract class PlayerList {
+
+ worldserver.methodProfiler.a("moving");
+ entity.setPositionRotation(exit.getX(), exit.getY(), exit.getZ(), exit.getYaw(), exit.getPitch());
+- if (entity.isAlive()) {
++ //if (entity.isAlive()) { // Paper - The entity will be dead, that's okay
+ worldserver.entityJoinedWorld(entity, false);
+- }
++ //} // Paper
+ /*
+ if (entity.dimension == -1) {
+ d0 = MathHelper.a(d0 / 8.0D, worldserver1.getWorldBorder().b() + 16.0D, worldserver1.getWorldBorder().d() - 16.0D);
+@@ -969,7 +969,7 @@ public abstract class PlayerList {
+ d0 = (double) MathHelper.clamp((int) d0, -29999872, 29999872);
+ d1 = (double) MathHelper.clamp((int) d1, -29999872, 29999872);
+ */
+- if (entity.isAlive()) {
++ //if (entity.isAlive()) { // Paper - The entity will be dead, that's okay
+ // entity.setPositionRotation(d0, entity.locY, d1, entity.yaw, entity.pitch);
+ // worldserver1.getTravelAgent().a(entity, f);
+ if (portal) {
+@@ -982,7 +982,7 @@ public abstract class PlayerList {
+ }
+ // worldserver1.addEntity(entity);
+ worldserver1.entityJoinedWorld(entity, false);
+- }
++ //} // Paper
+
+ worldserver.methodProfiler.b();
+ }
--
2.12.0.windows.1