diff options
author | Zach Brown <[email protected]> | 2019-09-29 15:02:04 -0500 |
---|---|---|
committer | Zach Brown <[email protected]> | 2019-09-29 15:02:04 -0500 |
commit | 89eb8902395f0a38b88d8f149658d846f88ee293 (patch) | |
tree | 99f6ca0a8d67525272bacbe8b0d2422bce6d6661 /Spigot-Server-Patches/0376-Handle-bad-chunks-more-gracefully.patch | |
parent | 27fca92fa13b0142b447d4919e2750afa644fc84 (diff) | |
download | Paper-89eb8902395f0a38b88d8f149658d846f88ee293.tar.gz Paper-89eb8902395f0a38b88d8f149658d846f88ee293.zip |
[CI-SKIP] Rebuild patches
Diffstat (limited to 'Spigot-Server-Patches/0376-Handle-bad-chunks-more-gracefully.patch')
-rw-r--r-- | Spigot-Server-Patches/0376-Handle-bad-chunks-more-gracefully.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0376-Handle-bad-chunks-more-gracefully.patch b/Spigot-Server-Patches/0376-Handle-bad-chunks-more-gracefully.patch new file mode 100644 index 0000000000..78a967a017 --- /dev/null +++ b/Spigot-Server-Patches/0376-Handle-bad-chunks-more-gracefully.patch @@ -0,0 +1,63 @@ +From b03aa2b2428cf6e504fe4f069f208679e666676f Mon Sep 17 00:00:00 2001 +From: Shane Freeder <[email protected]> +Date: Mon, 15 Apr 2019 02:24:52 +0100 +Subject: [PATCH] Handle bad chunks more gracefully + +Prior to this change the server would crash when attempting to load a +chunk from a region with bad data. + +After this change the server will defer back to vanilla behavior. At +this time, that means attempting to generate a chunk in its place +(and occasionally just not generating anything and leaving small +holes in the world (This statement might not be accurate as of 1.13.x)). + +Should Mojang choose to alter this behavior in the future, this change +will simply defer to whatever that new behavior is. + +diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java +index c53518a47..6f34d8aea 100644 +--- a/src/main/java/net/minecraft/server/RegionFileCache.java ++++ b/src/main/java/net/minecraft/server/RegionFileCache.java +@@ -171,8 +171,21 @@ public abstract class RegionFileCache implements AutoCloseable { + private static NBTTagCompound readOversizedChunk(RegionFile regionfile, ChunkCoordIntPair chunkCoordinate) throws IOException { + synchronized (regionfile) { + try (DataInputStream datainputstream = regionfile.getReadStream(chunkCoordinate)) { +- NBTTagCompound oversizedData = regionfile.getOversizedData(chunkCoordinate.x, chunkCoordinate.z); +- NBTTagCompound chunk = NBTCompressedStreamTools.readNBT(datainputstream); ++ // Paper start - Handle bad chunks more gracefully - also handle similarly with oversized data ++ NBTTagCompound oversizedData = null; ++ ++ try { ++ oversizedData = regionfile.getOversizedData(chunkCoordinate.x, chunkCoordinate.z); ++ } catch (Exception ex) {} ++ ++ NBTTagCompound chunk; ++ ++ try { ++ chunk = NBTCompressedStreamTools.readNBT(datainputstream); ++ } catch (final Exception ex) { ++ return null; ++ } ++ // Paper end + if (oversizedData == null) { + return chunk; + } +@@ -231,8 +244,13 @@ public abstract class RegionFileCache implements AutoCloseable { + + try { + if (datainputstream != null) { +- nbttagcompound = NBTCompressedStreamTools.a(datainputstream); +- return nbttagcompound; ++ // Paper start - Handle bad chunks more gracefully ++ try { ++ return NBTCompressedStreamTools.a(datainputstream); ++ } catch (Exception ex) { ++ return null; ++ } ++ // Paper end + } + + nbttagcompound = null; +-- +2.23.0 + |