Fix loadChunk(x, z, false)
I was not correctly checking if the status was even cached. Actually fix it this time Do not forget about the async chunk placeholder Actually fix it this time I hope No plugin tickets for getChunkAtGen(x, z, boolean) Change ChunkStatus ABI This is required for asynchronous IO. async io will require calls to getChunkStatusIfCached to return the chunk status for a chunk currently queued to save - this cannot be reasonably done with current ABI
This commit is contained in:
parent
55844cd88e
commit
9e4bffef00
4 changed files with 103 additions and 46 deletions
|
@ -7,7 +7,7 @@ The cache should contain the chunk status when saving. If not it
|
|||
will load it.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
index e0798c1c8..f21961d3a 100644
|
||||
index e2f8b18d9..7cb5438e4 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||
@@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||
|
@ -17,7 +17,7 @@ index e0798c1c8..f21961d3a 100644
|
|||
- nbttagcompound = this.readChunkData(chunkcoordintpair);
|
||||
- if (nbttagcompound != null && ChunkRegionLoader.a(nbttagcompound) == ChunkStatus.Type.LEVELCHUNK) {
|
||||
+ // Paper start - Optimize save by using status cache
|
||||
+ ChunkStatus statusOnDisk = this.getRegionFile(ichunkaccess.getPos(), false).getStatus(ichunkaccess.getPos().x, ichunkaccess.getPos().z, this);
|
||||
+ ChunkStatus statusOnDisk = this.getChunkStatusOnDisk(chunkcoordintpair);
|
||||
+ if (statusOnDisk != null && statusOnDisk.getType() == ChunkStatus.Type.LEVELCHUNK) {
|
||||
+ // Paper end
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue