mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-15 07:01:36 +08: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
bc17ce69d4
commit
c65dcad3eb
@ -1,4 +1,4 @@
|
|||||||
From 8507a6807398fadc4ead7cc3c3089a62d36aec06 Mon Sep 17 00:00:00 2001
|
From 6e4b6c3681b093e95db973304a8cd0b04880cb76 Mon Sep 17 00:00:00 2001
|
||||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||||
Date: Sat, 13 Jul 2019 09:23:10 -0700
|
Date: Sat, 13 Jul 2019 09:23:10 -0700
|
||||||
Subject: [PATCH] Asynchronous chunk IO and loading
|
Subject: [PATCH] Asynchronous chunk IO and loading
|
||||||
@ -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 +1,492 @@
|
@@ -0,0 +1,492 @@
|
||||||
@ -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();
|
||||||
|
@ -1,26 +1,10 @@
|
|||||||
From aa1a9266fcdeb4ffc727142df482ebca0d03828d Mon Sep 17 00:00:00 2001
|
From 659e3b03a4d6f5e691a516535bbff7b8bf52aba4 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Sat, 11 Apr 2020 21:23:42 -0400
|
Date: Sat, 11 Apr 2020 21:23:42 -0400
|
||||||
Subject: [PATCH] Delay unsafe actions until after entity ticking is done
|
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
|
|
||||||
@@ -490,8 +490,11 @@ 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
|
||||||
|
Loading…
Reference in New Issue
Block a user