geforkt von Mirrors/Paper
70ce6ce831
This makes it easier for downstream projects (forks) to replace the version fetching system with their own. It is as simple as implementing an interface and overriding the default implementation of org.bukkit.UnsafeValues#getVersionFetcher() It also makes it easier for us to organize things like the version history feature. Lastly I have updated the paper implementation to check against the site API rather than against jenkins.
46 Zeilen
2.1 KiB
Diff
46 Zeilen
2.1 KiB
Diff
From 2559ccb6ede819d825bb466f3d90513f38de050b 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/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 1a01e5e69..be3ce3f13 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -635,7 +635,7 @@ public class WorldServer extends World {
|
|
this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY);
|
|
}
|
|
|
|
- if (!entity.bT() && !this.isChunkLoaded(i, k)) {
|
|
+ if (!entity.valid && !entity.bT() && !this.isChunkLoaded(i, k)) { // Paper - always load chunks to register valid entities location
|
|
entity.inChunk = false;
|
|
} else {
|
|
this.getChunkAt(i, k).a(entity);
|
|
@@ -950,7 +950,7 @@ public class WorldServer extends World {
|
|
return false;
|
|
}
|
|
// CraftBukkit end
|
|
- IChunkAccess ichunkaccess = this.getChunkAt(MathHelper.floor(entity.locX / 16.0D), MathHelper.floor(entity.locZ / 16.0D), ChunkStatus.FULL, entity.attachedToPlayer);
|
|
+ IChunkAccess ichunkaccess = this.getChunkAt(MathHelper.floor(entity.locX / 16.0D), MathHelper.floor(entity.locZ / 16.0D), ChunkStatus.FULL, true); // Paper - always load chunks for entity adds
|
|
|
|
if (!(ichunkaccess instanceof Chunk)) {
|
|
return false;
|
|
--
|
|
2.21.0
|
|
|