diff options
Diffstat (limited to 'Spigot-Server-Patches-Unmapped/0393-Don-t-load-Chunks-from-Hoppers-and-other-things.patch')
-rw-r--r-- | Spigot-Server-Patches-Unmapped/0393-Don-t-load-Chunks-from-Hoppers-and-other-things.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Spigot-Server-Patches-Unmapped/0393-Don-t-load-Chunks-from-Hoppers-and-other-things.patch b/Spigot-Server-Patches-Unmapped/0393-Don-t-load-Chunks-from-Hoppers-and-other-things.patch new file mode 100644 index 0000000000..34cdbbb716 --- /dev/null +++ b/Spigot-Server-Patches-Unmapped/0393-Don-t-load-Chunks-from-Hoppers-and-other-things.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar <[email protected]> +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/world/level/block/DoubleBlockFinder.java b/src/main/java/net/minecraft/world/level/block/DoubleBlockFinder.java +index d51f89fed6129c4b37ef63971f8f61dc14e8032d..efa98e87eead036246348f3915b401f0f52f2242 100644 +--- a/src/main/java/net/minecraft/world/level/block/DoubleBlockFinder.java ++++ b/src/main/java/net/minecraft/world/level/block/DoubleBlockFinder.java +@@ -29,7 +29,12 @@ 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 ++ IBlockData iblockdata1 = generatoraccess.getTypeIfLoaded(blockposition1); ++ if (iblockdata1 == null) { ++ return new DoubleBlockFinder.Result.Single<>(s0); ++ } ++ // Paper end + + if (iblockdata1.a(iblockdata.getBlock())) { + DoubleBlockFinder.BlockType doubleblockfinder_blocktype1 = (DoubleBlockFinder.BlockType) function.apply(iblockdata1); |