diff --git a/Spigot-Server-Patches/0289-Handle-bad-chunks-more-gracefully.patch b/Spigot-Server-Patches/0289-Handle-bad-chunks-more-gracefully.patch new file mode 100644 index 0000000000..258e3d61b3 --- /dev/null +++ b/Spigot-Server-Patches/0289-Handle-bad-chunks-more-gracefully.patch @@ -0,0 +1,53 @@ +From 2b86619b9cdca537a011f0b56ce28ecd4925ba8d Mon Sep 17 00:00:00 2001 +From: Zach Brown +Date: Tue, 17 Apr 2018 21:26:31 -0400 +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). + +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/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java +index 1e84afb0a..9055da64a 100644 +--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java ++++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java +@@ -167,6 +167,13 @@ public class ChunkProviderServer implements IChunkProvider { + chunk = originalGetChunkAt(i, j); + } + ++ // Paper start - If there was an issue loading the chunk from region, stage1 will fail and stage2 will load it sync ++ // all we need to do is fetch an instance ++ if (chunk == null) { ++ chunk = getChunkIfLoaded(i, j); ++ } ++ // Paper end ++ + // If we didn't load the chunk async and have a callback run it now + if (runnable != null) { + runnable.run(); +diff --git a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java +index ef9529add..cdf3b614c 100644 +--- a/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java ++++ b/src/main/java/org/bukkit/craftbukkit/chunkio/ChunkIOProvider.java +@@ -30,6 +30,11 @@ class ChunkIOProvider implements AsynchronousExecutor.CallBackProvider