From c19d48c6fc75aaed8cebf80cdd4cd81feeb8fd40 Mon Sep 17 00:00:00 2001 From: Jsinco Date: Sun, 2 Feb 2025 15:54:05 -0500 Subject: [PATCH] fix: #219, waterlogged blocks --- CHANGELOG.md | 2 +- .../insights/listeners/BlockListener.java | 13 ++++++++++++- build.gradle.kts | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fb9676f..116ca880 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,2 @@ # Changelog -- 1.21.4 Support by @Jsinco +- Fix [#219](https://github.com/InsightsPlugin/Insights/issues/219), waterlogged blocks being counted on bucket filling. By @Jsinco diff --git a/Insights/src/main/java/dev/frankheijden/insights/listeners/BlockListener.java b/Insights/src/main/java/dev/frankheijden/insights/listeners/BlockListener.java index efd8624b..8b965a1b 100644 --- a/Insights/src/main/java/dev/frankheijden/insights/listeners/BlockListener.java +++ b/Insights/src/main/java/dev/frankheijden/insights/listeners/BlockListener.java @@ -15,6 +15,7 @@ import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.block.data.Directional; +import org.bukkit.block.data.Waterlogged; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.block.BlockBreakEvent; @@ -38,6 +39,8 @@ import org.bukkit.event.block.SpongeAbsorbEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; +import org.jetbrains.annotations.Nullable; + import java.util.List; import java.util.Optional; @@ -188,9 +191,17 @@ public void onPlayerBucketFill(PlayerBucketFillEvent event) { var block = event.getBlock(); var itemStack = event.getItemStack(); if (itemStack != null && itemStack.getType() == Material.MILK_BUCKET) return; + var material = block.getType(); + + // When a block is waterlogged, it returns the waterlogged block instead of WATER, LAVA, etc. + if (block.getBlockData() instanceof Waterlogged waterlogged && waterlogged.isWaterlogged()) { + // As far as I'm aware, waterlogged blocks must always be with water, + // so we can confidently say this is water we're checking for. + material = Material.WATER; + } // Handle the removal - handleRemoval(event.getPlayer(), block.getLocation(), ScanObject.of(block.getType()), 1, false); + handleRemoval(event.getPlayer(), block.getLocation(), ScanObject.of(material), 1, false); } private Block getTopNonGravityBlock(Block start) { diff --git a/build.gradle.kts b/build.gradle.kts index 3d74fbf7..cf91dac4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ plugins { val name = "Insights" group = "dev.frankheijden.insights" val dependencyDir = "$group.dependencies" -version = "6.19.4" +version = "6.19.5" subprojects { apply(plugin = "java")