3496f2d7e4
Developers!: You will need to clean up your work/Minecraft/1.13.2 folder for this Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: b850a822 SPIGOT-4526: Add conversion time API for Zombie & subclasses CraftBukkit Changes: 38cf676e SPIGOT-4534: CreatureSpawnEvent not being called for CHUNK_GEN b446cb5d SPIGOT-4527: Fix sponges with waterlogged blocks 6ec8ea5c SPIGOT-4526: Add conversion time API for Zombie & subclasses c64fe508 Mappings Update a3c2ec03 Fix missing ServerListPingEvent call for legacy pings Spigot Changes: 1dc156ce Rebuild patches 140f654d Mappings Update
44 lines
2 KiB
Diff
44 lines
2 KiB
Diff
From 4efe8ec5c1de9ba28e8321dc77c8f05b6924c3c0 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 4421be836..d084787f1 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -1079,7 +1079,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) {
|
|
@@ -1583,7 +1583,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.0
|
|
|