From e0e927465d941b8e72d93a01a068a196a9e7defe Mon Sep 17 00:00:00 2001 From: Emilia Kond Date: Tue, 2 Dec 2025 20:36:56 +0200 Subject: [PATCH 1/2] Don't assume waterlogged blocks get destroyed by water Emptying a bucket into a block which can be waterlogged simply changes its block data. Count it as an interaction. --- .../java/org/popcraft/bolt/listeners/BlockListener.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java b/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java index 0cbd509b..7b725ec4 100644 --- a/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java +++ b/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java @@ -16,6 +16,7 @@ import org.bukkit.block.ChiseledBookshelf; import org.bukkit.block.PistonMoveReaction; import org.bukkit.block.data.Directional; +import org.bukkit.block.data.Waterlogged; import org.bukkit.block.data.type.Leaves; import org.bukkit.block.data.type.Piston; import org.bukkit.entity.Player; @@ -470,6 +471,11 @@ public void onPlayerBucketEmpty(final PlayerBucketEmptyEvent e) { if (!plugin.canAccess(protection, player, Permission.INTERACT, Permission.DEPOSIT)) { e.setCancelled(true); } + } else if (e.getBlock().getBlockData() instanceof Waterlogged) { + // Blocks which can be waterlogged won't be replaced, but their data will change + if (!plugin.canAccess(protection, player, Permission.INTERACT)) { + e.setCancelled(true); + } } else if (!e.getBlock().equals(e.getBlockClicked())) { // Prevent accidental deletion of protected blocks by them getting replaced. // Purposefully not checking for destroy permissions, that logic is for BlockBreakEvent. From a4779b983bcd0aa59a8846f88e2064091df0135b Mon Sep 17 00:00:00 2001 From: Emilia Kond Date: Tue, 2 Dec 2025 20:46:57 +0200 Subject: [PATCH 2/2] Make un-waterlogging an interaction as well --- .../main/java/org/popcraft/bolt/listeners/BlockListener.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java b/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java index 7b725ec4..59a09797 100644 --- a/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java +++ b/bukkit/src/main/java/org/popcraft/bolt/listeners/BlockListener.java @@ -494,6 +494,10 @@ public void onPlayerBucketFill(final PlayerBucketFillEvent e) { if (!plugin.canAccess(protection, player, Permission.INTERACT, Permission.WITHDRAW)) { e.setCancelled(true); } + } else if (e.getBlock().getBlockData() instanceof Waterlogged) { + if (!plugin.canAccess(protection, player, Permission.INTERACT)) { + e.setCancelled(true); + } } }