diff options
Diffstat (limited to 'patches/removed/0036-Fast-draining.patch')
-rw-r--r-- | patches/removed/0036-Fast-draining.patch | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/patches/removed/0036-Fast-draining.patch b/patches/removed/0036-Fast-draining.patch deleted file mode 100644 index d9f21d81ee..0000000000 --- a/patches/removed/0036-Fast-draining.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 4b300fd41621071f122933ad9400521cb46228a0 Mon Sep 17 00:00:00 2001 -From: Byteflux <[email protected]> -Date: Wed, 2 Mar 2016 12:20:52 -0600 -Subject: [PATCH] Fast draining - - -diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 15675efbf..dbd82d5a9 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -183,4 +183,11 @@ public class PaperWorldConfig { - optimizeExplosions = getBoolean("optimize-explosions", false); - log("Optimize explosions: " + optimizeExplosions); - } -+ -+ public boolean fastDrainLava; -+ public boolean fastDrainWater; -+ private void fastDrain() { -+ fastDrainLava = getBoolean("fast-drain.lava", false); -+ fastDrainWater = getBoolean("fast-drain.water", false); -+ } - } -diff --git a/src/main/java/net/minecraft/server/BlockFlowing.java b/src/main/java/net/minecraft/server/BlockFlowing.java -index 3b47253a4..3aaa19b2f 100644 ---- a/src/main/java/net/minecraft/server/BlockFlowing.java -+++ b/src/main/java/net/minecraft/server/BlockFlowing.java -@@ -69,7 +69,7 @@ public class BlockFlowing extends BlockFluids { - } - } - -- if (this.material == Material.LAVA && i < 8 && i1 < 8 && i1 > i && random.nextInt(4) != 0) { -+ if (!world.paperConfig.fastDrainLava && this.material == Material.LAVA && i < 8 && i1 < 8 && i1 > i && random.nextInt(4) != 0) { // Paper - j *= 4; - } - -@@ -77,7 +77,7 @@ public class BlockFlowing extends BlockFluids { - this.f(world, blockposition, iblockdata); - } else { - i = i1; -- if (i1 < 0) { -+ if (i1 < 0 || canFastDrain(world, blockposition)) { // Paper - Fast draining - world.setAir(blockposition); - } else { - iblockdata = iblockdata.set(BlockFlowing.LEVEL, Integer.valueOf(i1)); -@@ -267,6 +267,7 @@ public class BlockFlowing extends BlockFluids { - - } - -+ // Paper start - /** - * Paper - Get flow speed. Throttle if its water and flowing adjacent to lava - */ -@@ -280,4 +281,57 @@ public class BlockFlowing extends BlockFluids { - } - return super.a(world); - } -+ -+ private int getFluidLevel(IBlockAccess iblockaccess, BlockPosition blockposition) { -+ return iblockaccess.getType(blockposition).getMaterial() == this.material ? iblockaccess.getType(blockposition).get(BlockFluids.LEVEL) : -1; -+ } -+ -+ /** -+ * Paper - Data check method for fast draining -+ */ -+ public int getData(World world, BlockPosition position) { -+ int data = this.getFluidLevel((IBlockAccess) world, position); -+ return data < 8 ? data : 0; -+ } -+ -+ /** -+ * Paper - Checks surrounding blocks to determine if block can be fast drained -+ */ -+ public boolean canFastDrain(World world, BlockPosition position) { -+ boolean result = false; -+ int data = getData(world, position); -+ if (this.material == Material.WATER) { -+ if (world.paperConfig.fastDrainWater) { -+ result = true; -+ if (getData(world, position.down()) < 0) { -+ result = false; -+ } else if (world.getType(position.north()).getBlock().getBlockData().getMaterial() == Material.WATER && getData(world, position.north()) < data) { -+ result = false; -+ } else if (world.getType(position.south()).getBlock().getBlockData().getMaterial() == Material.WATER && getData(world, position.south()) < data) { -+ result = false; -+ } else if (world.getType(position.west()).getBlock().getBlockData().getMaterial() == Material.WATER && getData(world, position.west()) < data) { -+ result = false; -+ } else if (world.getType(position.east()).getBlock().getBlockData().getMaterial() == Material.WATER && getData(world, position.east()) < data) { -+ result = false; -+ } -+ } -+ } else if (this.material == Material.LAVA) { -+ if (world.paperConfig.fastDrainLava) { -+ result = true; -+ if (getData(world, position.down()) < 0 || world.getType(position.up()).getBlock().getBlockData().getMaterial() != Material.AIR) { -+ result = false; -+ } else if (world.getType(position.north()).getBlock().getBlockData().getMaterial() == Material.LAVA && getData(world, position.north()) < data) { -+ result = false; -+ } else if (world.getType(position.south()).getBlock().getBlockData().getMaterial() == Material.LAVA && getData(world, position.south()) < data) { -+ result = false; -+ } else if (world.getType(position.west()).getBlock().getBlockData().getMaterial() == Material.LAVA && getData(world, position.west()) < data) { -+ result = false; -+ } else if (world.getType(position.east()).getBlock().getBlockData().getMaterial() == Material.LAVA && getData(world, position.east()) < data) { -+ result = false; -+ } -+ } -+ } -+ return result; -+ } -+ // Paper end - } --- -2.18.0 - |