From 9b52a0d13368ec92d7773a8569bfee9c8fa5a75b Mon Sep 17 00:00:00 2001 From: RoboMWM Date: Sat, 2 Mar 2019 12:12:18 -0800 Subject: [PATCH] Prevent unauthorized users from taking water from waterlogged blocks Thanks @jikoo for the snippet Closes #473 , closes #477 --- .../GriefPrevention/PlayerEventHandler.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index eea8648..96fb367 100644 --- a/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/main/java/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -32,7 +32,9 @@ import org.bukkit.World; import org.bukkit.World.Environment; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Levelled; +import org.bukkit.block.data.Waterlogged; import org.bukkit.command.Command; import org.bukkit.entity.AbstractHorse; import org.bukkit.entity.Animals; @@ -1565,7 +1567,14 @@ class PlayerEventHandler implements Listener { //exemption for cow milking (permissions will be handled by player interact with entity event instead) Material blockType = block.getType(); - if(blockType == Material.AIR || blockType.isSolid()) return; + if (blockType == Material.AIR) + return; + if(blockType.isSolid()) + { + BlockData blockData = block.getBlockData(); + if (!(blockData instanceof Waterlogged) || !((Waterlogged)blockData).isWaterlogged()) + return; + } instance.sendMessage(player, TextMode.Err, noBuildReason); bucketEvent.setCancelled(true); @@ -1574,7 +1583,6 @@ class PlayerEventHandler implements Listener } //when a player interacts with the world - @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.LOWEST) void onPlayerInteract(PlayerInteractEvent event) {