From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Sat, 22 Jun 2019 04:20:47 -0700
Subject: [PATCH] Use ChunkStatus cache when saving protochunks

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 1d517fd1aea90edf470388fd857a41f2be149327..9171785ad54a26e95dea8b30509c1e49a5d9b22d 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -845,8 +845,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
                 NBTTagCompound nbttagcompound;
 
                 if (chunkstatus.getType() != ChunkStatus.Type.LEVELCHUNK) {
-                    nbttagcompound = this.readChunkData(chunkcoordintpair);
-                    if (nbttagcompound != null && ChunkRegionLoader.a(nbttagcompound) == ChunkStatus.Type.LEVELCHUNK) {
+                    // Paper start - Optimize save by using status cache
+                    ChunkStatus statusOnDisk = this.getChunkStatusOnDisk(chunkcoordintpair);
+                    if (statusOnDisk != null && statusOnDisk.getType() == ChunkStatus.Type.LEVELCHUNK) {
+                        // Paper end
                         return false;
                     }
 
