Prevent unauthorized users from taking water from waterlogged blocks

Thanks @jikoo for the snippet

Closes #473 , closes #477
This commit is contained in:
RoboMWM 2019-03-02 12:12:18 -08:00
parent cd1c3d52bc
commit 9b52a0d133

View File

@ -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)
{