From 63e28b1c3d7d505d37a16d662141e91fd7cde065 Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Wed, 1 Apr 2015 17:21:15 +0100 Subject: [PATCH] Don't allow liquids to flow into unloaded chunks --- nms-patches/BlockFlowing.patch | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/nms-patches/BlockFlowing.patch b/nms-patches/BlockFlowing.patch index 9b22e0e18d..ce1f529262 100644 --- a/nms-patches/BlockFlowing.patch +++ b/nms-patches/BlockFlowing.patch @@ -1,5 +1,5 @@ ---- /home/matt/mc-dev-private//net/minecraft/server/BlockFlowing.java 2015-02-26 22:40:22.127608144 +0000 -+++ src/main/java/net/minecraft/server/BlockFlowing.java 2015-02-26 22:40:22.127608144 +0000 +--- /home/matt/mc-dev-private//net/minecraft/server/BlockFlowing.java 2015-04-01 17:20:36.772751379 +0100 ++++ src/main/java/net/minecraft/server/BlockFlowing.java 2015-04-01 17:20:36.772751379 +0100 @@ -5,6 +5,11 @@ import java.util.Random; import java.util.Set; @@ -12,20 +12,18 @@ public class BlockFlowing extends BlockFluids { int a; -@@ -18,7 +23,12 @@ +@@ -18,6 +23,11 @@ } public void b(World world, BlockPosition blockposition, IBlockData iblockdata, Random random) { -- int i = ((Integer) iblockdata.get(BlockFlowing.LEVEL)).intValue(); + // CraftBukkit start + org.bukkit.World bworld = world.getWorld(); + org.bukkit.Server server = world.getServer(); + org.bukkit.block.Block source = bworld == null ? null : bworld.getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); + // CraftBukkit end -+ int i = ((Integer) iblockdata.get(LEVEL)).intValue(); + int i = ((Integer) iblockdata.get(BlockFlowing.LEVEL)).intValue(); byte b0 = 1; - if (this.material == Material.LAVA && !world.worldProvider.n()) { @@ -88,6 +98,12 @@ IBlockData iblockdata2 = world.getType(blockposition.down()); @@ -48,7 +46,7 @@ } else if (i >= 0 && (i == 0 || this.g(world, blockposition.down(), iblockdata2))) { Set set = this.f(world, blockposition); -@@ -116,7 +134,16 @@ +@@ -116,14 +134,23 @@ while (iterator1.hasNext()) { EnumDirection enumdirection1 = (EnumDirection) iterator1.next(); @@ -66,3 +64,11 @@ } } + } + + private void flow(World world, BlockPosition blockposition, IBlockData iblockdata, int i) { +- if (this.h(world, blockposition, iblockdata)) { ++ if (world.isLoaded(blockposition) && this.h(world, blockposition, iblockdata)) { // CraftBukkit - add isLoaded check + if (iblockdata.getBlock() != Blocks.AIR) { + if (this.material == Material.LAVA) { + this.fizz(world, blockposition);