diff --git a/patches/net/minecraft/world/chunk/storage/AnvilChunkLoader.java.patch b/patches/net/minecraft/world/chunk/storage/AnvilChunkLoader.java.patch index 202c464..da0fbfd 100644 --- a/patches/net/minecraft/world/chunk/storage/AnvilChunkLoader.java.patch +++ b/patches/net/minecraft/world/chunk/storage/AnvilChunkLoader.java.patch @@ -22,7 +22,14 @@ private static final String __OBFID = "CL_00000384"; public AnvilChunkLoader(File p_i2003_1_) -@@ -73,13 +81,16 @@ +@@ -68,18 +76,22 @@ + } + } + +- return RegionFileCache.createOrLoadRegionFile(this.chunkSaveLocation, i, j).chunkExists(i & 31, j & 31); ++ final RegionFile region = RegionFileCache.createOrLoadRegionFile(this.chunkSaveLocation, i, j, false); ++ return region != null && region.chunkExists(i & 31, j & 31); + } public Chunk loadChunk(World p_75815_1_, int p_75815_2_, int p_75815_3_) throws IOException { @@ -39,7 +46,7 @@ return chunk; } -@@ -156,8 +167,8 @@ +@@ -156,8 +168,8 @@ if (!chunk.isAtLocation(p_75822_2_, p_75822_3_)) { logger.error("Chunk file at " + p_75822_2_ + "," + p_75822_3_ + " is in the wrong location; relocating. (Expected " + p_75822_2_ + ", " + p_75822_3_ + ", got " + chunk.xPosition + ", " + chunk.zPosition + ")"); @@ -50,7 +57,7 @@ // Have to move tile entities since we don't load them at this stage NBTTagList tileEntities = p_75822_4_.getCompoundTag("Level").getTagList("TileEntities", 10); -@@ -187,8 +198,18 @@ +@@ -187,7 +199,17 @@ public void saveChunk(World p_75816_1_, Chunk p_75816_2_) throws MinecraftException, IOException { @@ -64,13 +71,12 @@ + { + ex.printStackTrace(); + } - -+ // CraftBukkit end + ++ // CraftBukkit end + try { - NBTTagCompound nbttagcompound = new NBTTagCompound(); -@@ -230,7 +251,7 @@ +@@ -230,7 +252,7 @@ public boolean writeNextIO() { @@ -79,7 +85,7 @@ Object object = this.syncLockObject; synchronized (this.syncLockObject) -@@ -240,15 +261,15 @@ +@@ -240,15 +262,15 @@ return false; } @@ -99,7 +105,7 @@ } catch (Exception exception) { -@@ -259,7 +280,7 @@ +@@ -259,7 +281,7 @@ return true; } @@ -108,7 +114,7 @@ { DataOutputStream dataoutputstream = RegionFileCache.getChunkOutputStream(this.chunkSaveLocation, p_75821_1_.chunkCoordinate.chunkXPos, p_75821_1_.chunkCoordinate.chunkZPos); CompressedStreamTools.write(p_75821_1_.nbtTags, dataoutputstream); -@@ -307,19 +328,19 @@ +@@ -307,19 +329,19 @@ if (extendedblockstorage.getBlockMSBArray() != null) { @@ -133,7 +139,7 @@ } nbttaglist.appendTag(nbttagcompound1); -@@ -455,6 +476,7 @@ +@@ -455,6 +477,7 @@ public void loadEntities(World p_75823_1_, NBTTagCompound p_75823_2_, Chunk chunk) { @@ -141,7 +147,7 @@ NBTTagList nbttaglist1 = p_75823_2_.getTagList("Entities", 10); if (nbttaglist1 != null) -@@ -468,24 +490,31 @@ +@@ -468,24 +491,31 @@ if (entity2 != null) { chunk.addEntity(entity2); @@ -161,14 +167,14 @@ - entity.mountEntity(entity1); - } + Entity entity1 = EntityList.createEntityFromNBT(nbttagcompound2.getCompoundTag("Riding"), p_75823_1_); - -- entity = entity1; ++ + if (entity1 != null) + { + chunk.addEntity(entity1); + entity.mountEntity(entity1); + } -+ + +- entity = entity1; + entity = entity1; + } } @@ -182,7 +188,7 @@ NBTTagList nbttaglist2 = p_75823_2_.getTagList("TileEntities", 10); if (nbttaglist2 != null) -@@ -497,11 +526,35 @@ +@@ -497,11 +527,35 @@ if (tileentity != null) { @@ -218,7 +224,7 @@ if (p_75823_2_.hasKey("TileTicks", 9)) { NBTTagList nbttaglist3 = p_75823_2_.getTagList("TileTicks", 10); -@@ -515,6 +568,7 @@ +@@ -515,6 +569,7 @@ } } } @@ -226,3 +232,9 @@ // return chunk; } +@@ -531,4 +586,4 @@ + this.nbtTags = p_i2002_2_; + } + } +-} ++} diff --git a/patches/net/minecraft/world/chunk/storage/RegionFileCache.java.patch b/patches/net/minecraft/world/chunk/storage/RegionFileCache.java.patch index 5c19476..31f9f78 100644 --- a/patches/net/minecraft/world/chunk/storage/RegionFileCache.java.patch +++ b/patches/net/minecraft/world/chunk/storage/RegionFileCache.java.patch @@ -1,6 +1,6 @@ --- ../src-base/minecraft/net/minecraft/world/chunk/storage/RegionFileCache.java +++ ../src-work/minecraft/net/minecraft/world/chunk/storage/RegionFileCache.java -@@ -10,7 +10,7 @@ +@@ -10,11 +10,15 @@ public class RegionFileCache { @@ -9,3 +9,25 @@ private static final String __OBFID = "CL_00000383"; public static synchronized RegionFile createOrLoadRegionFile(File p_76550_0_, int p_76550_1_, int p_76550_2_) + { ++ return createOrLoadRegionFile(p_76550_0_, p_76550_1_, p_76550_2_, true); ++ } ++ public static synchronized RegionFile createOrLoadRegionFile(File p_76550_0_, int p_76550_1_, int p_76550_2_, boolean create) ++ { + File file2 = new File(p_76550_0_, "region"); + File file3 = new File(file2, "r." + (p_76550_1_ >> 5) + "." + (p_76550_2_ >> 5) + ".mca"); + RegionFile regionfile = (RegionFile)regionsByFilename.get(file3); +@@ -25,6 +29,7 @@ + } + else + { ++ if (!create && !file2.exists()) { return null; } // PaperSpigot + if (!file2.exists()) + { + file2.mkdirs(); +@@ -76,4 +81,4 @@ + RegionFile regionfile = createOrLoadRegionFile(p_76552_0_, p_76552_1_, p_76552_2_); + return regionfile.getChunkDataOutputStream(p_76552_1_ & 31, p_76552_2_ & 31); + } +-} ++}