From 24f2a7f9f6dbce303740f2e6e6e2abe7a72d2b6f Mon Sep 17 00:00:00 2001 From: Aikar Date: Sun, 29 Jul 2018 12:06:35 -0400 Subject: [PATCH] Always move Entity to its new Chunk even if unloaded Vanilla logic here would allow us to remvoe an entity from its current chunk, and if it was going to move into an unloaded chunk, that entity would not be added to the unloaded chunk. This is bad because this will result in the entity being lost! In almost all cases, the chunk will be loaded, but in the event it wasn't, instead of losing the entity, load the chunk to add the entity to it. --- Spigot-Server-Patches/Chunk-registration-fixes.patch | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Spigot-Server-Patches/Chunk-registration-fixes.patch b/Spigot-Server-Patches/Chunk-registration-fixes.patch index 879c1be7e..4c52703a5 100644 --- a/Spigot-Server-Patches/Chunk-registration-fixes.patch +++ b/Spigot-Server-Patches/Chunk-registration-fixes.patch @@ -8,7 +8,7 @@ World checks and the Chunk Add logic are inconsistent on how Y > 256, < 0, is tr Keep them consistent diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 6e37c4366..000d2eeb9 100644 +index 6e37c4366..ea24a6e4c 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { @@ -20,4 +20,13 @@ index 6e37c4366..000d2eeb9 100644 int k = MathHelper.floor(entity.locZ / 16.0D); if (!entity.aa || entity.ab != i || entity.ac != j || entity.ad != k) { +@@ -0,0 +0,0 @@ public abstract class World implements IBlockAccess { + this.getChunkAt(entity.ab, entity.ad).a(entity, entity.ac); + } + +- if (!entity.bD() && !this.isChunkLoaded(i, k, true)) { ++ if (false && !entity.bD() && !this.isChunkLoaded(i, k, true)) { // Paper - Always send entities into a new chunk, never lose them + entity.aa = false; + } else { + this.getChunkAt(i, k).a(entity); -- \ No newline at end of file