From 33ee1e700d1d9135c8ea8f9a75dbd976a059fa4e Mon Sep 17 00:00:00 2001 From: Encode42 Date: Thu, 25 Mar 2021 12:16:27 -0400 Subject: [PATCH] Configurable sponge absorption (closes #232) (#236) --- .../0196-Configurable-sponge-absorption.patch | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 patches/server/0196-Configurable-sponge-absorption.patch diff --git a/patches/server/0196-Configurable-sponge-absorption.patch b/patches/server/0196-Configurable-sponge-absorption.patch new file mode 100644 index 000000000..b64565efc --- /dev/null +++ b/patches/server/0196-Configurable-sponge-absorption.patch @@ -0,0 +1,62 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Encode42 +Date: Wed, 24 Mar 2021 20:30:37 -0400 +Subject: [PATCH] Configurable sponge absorption + +Allows the total area and radius of water blocks the sponge can absorb to be changed. + +diff --git a/src/main/java/net/minecraft/world/level/block/BlockSponge.java b/src/main/java/net/minecraft/world/level/block/BlockSponge.java +index d80eee47390ab202eea0368571421bbc94655ab1..b36536d4cc95797c59549f5db1f67b34ff7b9be2 100644 +--- a/src/main/java/net/minecraft/world/level/block/BlockSponge.java ++++ b/src/main/java/net/minecraft/world/level/block/BlockSponge.java +@@ -76,13 +76,13 @@ public class BlockSponge extends Block { + if (fluid.a((Tag) TagsFluid.WATER)) { + if (iblockdata.getBlock() instanceof IFluidSource && ((IFluidSource) iblockdata.getBlock()).removeFluid(blockList, blockposition2, iblockdata) != FluidTypes.EMPTY) { // CraftBukkit + ++i; +- if (j < 6) { ++ if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur + queue.add(new Tuple<>(blockposition2, j + 1)); + } + } else if (iblockdata.getBlock() instanceof BlockFluids) { + blockList.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3); // CraftBukkit + ++i; +- if (j < 6) { ++ if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur + queue.add(new Tuple<>(blockposition2, j + 1)); + } + } else if (material == Material.WATER_PLANT || material == Material.REPLACEABLE_WATER_PLANT) { +@@ -93,14 +93,14 @@ public class BlockSponge extends Block { + blockList.setTypeAndData(blockposition2, Blocks.AIR.getBlockData(), 3); + // CraftBukkit end + ++i; +- if (j < 6) { ++ if (j < world.purpurConfig.spongeAbsorptionRadius) { // Purpur + queue.add(new Tuple<>(blockposition2, j + 1)); + } + } + } + } + +- if (i > 64) { ++ if (i > world.purpurConfig.spongeAbsorptionArea) { // Purpur + break; + } + } +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index eb91425fa9bdbb2bd2a25e7362b99e2b6687da80..a4cf0231861e6554df912cea77eaff2200c65c5f 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -555,6 +555,13 @@ public class PurpurWorldConfig { + spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + } + ++ public int spongeAbsorptionArea = 64; ++ public int spongeAbsorptionRadius = 6; ++ private void spongeSettings() { ++ spongeAbsorptionArea = getInt("blocks.sponge.absorption.area", spongeAbsorptionArea); ++ spongeAbsorptionRadius = getInt("blocks.sponge.absorption.radius", spongeAbsorptionRadius); ++ } ++ + public float stonecutterDamage = 0.0F; + private void stonecutterSettings() { + stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage);