diff --git a/Spigot-Server-Patches/Don-t-load-Chunks-from-Hoppers-and-other-things.patch b/Spigot-Server-Patches/Don-t-load-Chunks-from-Hoppers-and-other-things.patch new file mode 100644 index 000000000..47f827637 --- /dev/null +++ b/Spigot-Server-Patches/Don-t-load-Chunks-from-Hoppers-and-other-things.patch @@ -0,0 +1,34 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Thu, 3 Nov 2016 20:28:12 -0400 +Subject: [PATCH] Don't load Chunks from Hoppers and other things + +Hoppers call this to I guess "get the primary side" of a double sided chest. + +If the double sided chest crosses chunk lines, it causes the chunk to load. +This will end up causing sync chunk loads, which will unload with Chunk GC, +only to be reloaded again the next tick. + +This of course is undesirable, so just return the loaded side as "primary" +and treat it as a single chest if the other sides are unloaded + +diff --git a/src/main/java/net/minecraft/server/DoubleBlockFinder.java b/src/main/java/net/minecraft/server/DoubleBlockFinder.java +index 3cb6e6089..7a16a3e0e 100644 +--- a/src/main/java/net/minecraft/server/DoubleBlockFinder.java ++++ b/src/main/java/net/minecraft/server/DoubleBlockFinder.java +@@ -0,0 +0,0 @@ public class DoubleBlockFinder { + return new DoubleBlockFinder.Result.Single<>(s0); + } else { + BlockPosition blockposition1 = blockposition.shift((EnumDirection) function1.apply(iblockdata)); +- IBlockData iblockdata1 = generatoraccess.getType(blockposition1); +- ++ // Paper start - don't load chunks if the other side of the chest is in unloaded chunk ++ IBlockData iblockdata1 = generatoraccess.getTypeIfLoaded(blockposition1); ++ if (iblockdata1 == null) { ++ return new DoubleBlockFinder.Result.Single<>(s0); ++ } ++ // Paper end + if (iblockdata1.getBlock() == iblockdata.getBlock()) { + DoubleBlockFinder.BlockType doubleblockfinder_blocktype1 = (DoubleBlockFinder.BlockType) function.apply(iblockdata1); + +-- \ No newline at end of file