From e6a6cd4fece2e7279061550346da6373863948bc Mon Sep 17 00:00:00 2001 From: RedstoneFuture Date: Sat, 13 Jun 2026 18:08:30 +0200 Subject: [PATCH 1/3] Improving check for bucket interaction --- .../bukkit/listener/PlayerEventListener.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index 3ee8ec811a..d897bc9012 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -1423,9 +1423,13 @@ public void onBucketEmpty(PlayerBucketEmptyEvent event) { area.getFlag(UseFlag.class) : Collections.emptyList()); BlockType type = BukkitAdapter.asBlockType(block.getType()); for (final BlockTypeWrapper blockTypeWrapper : use) { - if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper - .accepts(type)) { - return; + if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(type)) { + // Allows this event for blocks that can be interacted with using a bucket without it being considered + // as "building" (= make it waterlogged or drop the block by flooding it) + if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON + || type == BlockTypes.SPONGE || type == BlockTypes.WET_SPONGE) { + return; + } } } if (plot == null) { @@ -1490,8 +1494,8 @@ public void onLeave(PlayerQuitEvent event) { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBucketFill(PlayerBucketFillEvent event) { - Block blockClicked = event.getBlockClicked(); - Location location = BukkitUtil.adapt(blockClicked.getLocation()); + Block block = event.getBlock(); + Location location = BukkitUtil.adapt(block.getLocation()); PlotArea area = location.getPlotArea(); if (area == null) { return; @@ -1502,11 +1506,15 @@ public void onBucketFill(PlayerBucketFillEvent event) { final List use = Optional.ofNullable(plot).map(p -> p.getFlag(UseFlag.class)).orElse(area.isRoadFlags() ? area.getFlag(UseFlag.class) : Collections.emptyList()); - BlockType type = BukkitAdapter.asBlockType(blockClicked.getType()); + BlockType type = BukkitAdapter.asBlockType(block.getType()); for (final BlockTypeWrapper blockTypeWrapper : use) { - if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper - .accepts(type)) { - return; + if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(type)) { + // Allows this event for blocks that can be interacted with using a bucket without it being considered + // as "building" (= make it waterlogged or drop the block by flooding it) + if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON + || type == BlockTypes.SPONGE || type == BlockTypes.WET_SPONGE) { + return; + } } } if (plot == null) { From f339ee58f0a6478c8a7af014f28b9e4adf03b905 Mon Sep 17 00:00:00 2001 From: RedstoneFuture Date: Sun, 14 Jun 2026 04:22:58 +0200 Subject: [PATCH 2/3] Removing Sponge because it is not a block for an interaction --- .../plotsquared/bukkit/listener/PlayerEventListener.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index d897bc9012..9b69e688eb 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -1426,8 +1426,7 @@ public void onBucketEmpty(PlayerBucketEmptyEvent event) { if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(type)) { // Allows this event for blocks that can be interacted with using a bucket without it being considered // as "building" (= make it waterlogged or drop the block by flooding it) - if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON - || type == BlockTypes.SPONGE || type == BlockTypes.WET_SPONGE) { + if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON) { return; } } @@ -1511,8 +1510,7 @@ public void onBucketFill(PlayerBucketFillEvent event) { if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(type)) { // Allows this event for blocks that can be interacted with using a bucket without it being considered // as "building" (= make it waterlogged or drop the block by flooding it) - if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON - || type == BlockTypes.SPONGE || type == BlockTypes.WET_SPONGE) { + if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON) { return; } } From fb48c35b9516b99bf4205717915c80a711b22209 Mon Sep 17 00:00:00 2001 From: RedstoneFuture Date: Sun, 14 Jun 2026 23:53:44 +0200 Subject: [PATCH 3/3] Replace Material type check --- .../com/plotsquared/bukkit/listener/PlayerEventListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index 9b69e688eb..990f434583 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -1426,7 +1426,7 @@ public void onBucketEmpty(PlayerBucketEmptyEvent event) { if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(type)) { // Allows this event for blocks that can be interacted with using a bucket without it being considered // as "building" (= make it waterlogged or drop the block by flooding it) - if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON) { + if (type.getId().equals("minecraft:cauldron") || type.getId().endsWith("_cauldron")) { return; } } @@ -1510,7 +1510,7 @@ public void onBucketFill(PlayerBucketFillEvent event) { if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(type)) { // Allows this event for blocks that can be interacted with using a bucket without it being considered // as "building" (= make it waterlogged or drop the block by flooding it) - if (type == BlockTypes.CAULDRON || type == BlockTypes.WATER_CAULDRON || type == BlockTypes.LAVA_CAULDRON) { + if (type.getId().equals("minecraft:cauldron") || type.getId().endsWith("_cauldron")) { return; } }