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..59a09797 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. @@ -488,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); + } } }