geforkt von Mirrors/Paper
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
Dieser Commit ist enthalten in:
Ursprung
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
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren