mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 05:47:45 +01:00
Don't delay chunk unloads during entity ticking
Leaf informed me this could cause ordering issues. So, the risk if this occurring is lowered now anyways, but if an entity causes a sync chunk load, it could process an unload... We will tackle the problem better in a future commit Also fixed another async-chunks=false issue
This commit is contained in:
parent
5fc72e41c0
commit
cb8f1dcc40
@ -1902,7 +1902,7 @@ index 0000000000..1dfa8abfd8
|
||||
+}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java
|
||||
new file mode 100644
|
||||
index 0000000000..ff19d38f82
|
||||
index 0000000000..0745a2015a
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java
|
||||
@@ -0,0 +0,0 @@
|
||||
@ -2297,7 +2297,7 @@ index 0000000000..ff19d38f82
|
||||
+ worker.flush();
|
||||
+ }
|
||||
+ }
|
||||
+ globalUrgentWorker.flush();
|
||||
+ if (globalUrgentWorker != null) globalUrgentWorker.flush();
|
||||
+
|
||||
+ // flush again since tasks we execute async saves
|
||||
+ drainChunkWaitQueue();
|
||||
|
@ -5,22 +5,6 @@ Subject: [PATCH] Delay unsafe actions until after entity ticking is done
|
||||
|
||||
This will help prevent many cases of unregistering entities during entity ticking
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java
|
||||
index a9a2ce3d3f..24cb88559b 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunk.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunk.java
|
||||
@@ -0,0 +0,0 @@ public class PlayerChunk {
|
||||
// Minecraft will apply the chunks tick lists to the world once the chunk got loaded, and then store the tick
|
||||
// lists again inside the chunk once the chunk becomes inaccessible and set the chunk's needsSaving flag.
|
||||
// These actions may however happen deferred, so we manually set the needsSaving flag already here.
|
||||
+ // Paper start
|
||||
+ ((WorldServer) chunk.world).doIfNotEntityTicking(() -> { // Paper
|
||||
chunk.setNeedsSaving(true);
|
||||
chunk.unloadCallback();
|
||||
+ }); // Paper
|
||||
});
|
||||
}
|
||||
}).exceptionally((throwable) -> {
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index cd8266f675..84a3367b87 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
|
Loading…
Reference in New Issue
Block a user