1e38743b1d
Also fixes build as a result of an upstream force push --- work/Bukkit Submodule work/Bukkit 217dc08d..d13fdf8c: > SPIGOT-4637: Add source block to BlockPhysicsEvent. --- work/CraftBukkit Submodule work/CraftBukkit acbba8ba..cb98c6ea: > Fix line endings in CraftDefaultPermissions > SPIGOT-4637: Add source block to BlockPhysicsEvent. --- work/Spigot Submodule work/Spigot 75ee78a0c...4165cd8f4 (commits not present) > (Manually Added) - Appears to be a result of an upstream force push > (Manually Added) - Changed: SPIGOT-4636: Add creative mode NBT permissions
45 Zeilen
2.0 KiB
Diff
45 Zeilen
2.0 KiB
Diff
From de96d474f37638ea81fa17ffb7ee63afaa065a4a Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Fri, 28 Sep 2018 21:49:53 -0400
|
|
Subject: [PATCH] Fix issues with entity loss due to unloaded chunks
|
|
|
|
Vanilla has risk of losing entities by causing them to be
|
|
removed from all chunks if they try to move into an unloaded chunk.
|
|
|
|
This pretty much means high chance this entity will be lost in this scenario.
|
|
|
|
There is another case that adding an entity to the world can fail if
|
|
the chunk isn't loaded.
|
|
|
|
Lots of the server is designed around addEntity never expecting to fail for these reasons,
|
|
nor is it really logical.
|
|
|
|
This change ensures the chunks are always loaded when entities are
|
|
added to the world, or a valid entity moves between chunks.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index 5dc32a6e5..21cfcb50d 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -1081,7 +1081,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
|
|
|
int i = MathHelper.floor(entity.locX / 16.0D);
|
|
int j = MathHelper.floor(entity.locZ / 16.0D);
|
|
- boolean flag = entity.attachedToPlayer;
|
|
+ boolean flag = true; // Paper - always load chunks for entity adds
|
|
|
|
// Paper start - Set origin location when the entity is being added to the world
|
|
if (entity.origin == null) {
|
|
@@ -1585,7 +1585,7 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
|
this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY);
|
|
}
|
|
|
|
- if (!entity.bN() && !this.isChunkLoaded(i, k, true)) {
|
|
+ if (!entity.valid && !entity.bN() && !this.isChunkLoaded(i, k, true)) { // Paper - always load chunks to register valid entities location
|
|
entity.inChunk = false;
|
|
} else {
|
|
this.getChunkAt(i, k).a(entity);
|
|
--
|
|
2.20.1
|
|
|