Files
Purpur/patches/server/0195-Configurable-sponge-absorption.patch
BillyGalbreath 1d3f710297 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
840e72091 [CI-SKIP] [Auto] Rebuild Patches
a33232d4a Add beacon activation and deactivation events (#5121)
bc7ea673a Add internal channel initialization listeners (#5557)
b28ad17ac Check for world change in MoveEvent API methods
3095c7592 [Auto] Updated Upstream (CraftBukkit)
f56989c97 Add RespawnFlags to PlayerRespawnEvent (#5533)
7579c2667 Add more API to PlayerMoveEvent (#5553)
2021-04-30 16:18:11 -05:00

63 lines
3.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Encode42 <me@encode42.dev>
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 813752be37c5f2956c4f10dcd974e4437020906c..e2504bf2846b66563936fc9329561da66e8ae985 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -589,6 +589,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);