mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-10 17:52:02 -07: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:
@@ -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
|
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
|
new file mode 100644
|
||||||
index 0000000000..ff19d38f82
|
index 0000000000..0745a2015a
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java
|
+++ b/src/main/java/com/destroystokyo/paper/io/chunk/ChunkTaskManager.java
|
||||||
@@ -0,0 +0,0 @@
|
@@ -0,0 +0,0 @@
|
||||||
@@ -2297,7 +2297,7 @@ index 0000000000..ff19d38f82
|
|||||||
+ worker.flush();
|
+ worker.flush();
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ globalUrgentWorker.flush();
|
+ if (globalUrgentWorker != null) globalUrgentWorker.flush();
|
||||||
+
|
+
|
||||||
+ // flush again since tasks we execute async saves
|
+ // flush again since tasks we execute async saves
|
||||||
+ drainChunkWaitQueue();
|
+ 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
|
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
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||||
index cd8266f675..84a3367b87 100644
|
index cd8266f675..84a3367b87 100644
|
||||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||||
|
Reference in New Issue
Block a user