diff --git a/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java b/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java index 76e366a3..85c88da6 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/listener/EventAbstractionListener.java @@ -42,6 +42,8 @@ import com.sk89q.worldguard.bukkit.util.Materials; import org.bukkit.Bukkit; import org.bukkit.DyeColor; +import org.bukkit.Effect; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Block; @@ -141,6 +143,10 @@ public EventAbstractionListener(WorldGuardPlugin plugin) { @EventHandler(ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { Events.fireToCancel(event, new BreakBlockEvent(event, create(event.getPlayer()), event.getBlock())); + + if (event.isCancelled()) { + playDenyEffect(event.getPlayer(), event.getBlock().getLocation().add(0.5, 0.7, 0.5)); + } } @EventHandler(ignoreCancelled = true) @@ -160,6 +166,10 @@ public void onBlockPlace(BlockPlaceEvent event) { if (!event.isCancelled()) { Events.fireToCancel(event, new PlaceBlockEvent(event, create(event.getPlayer()), event.getBlock())); } + + if (event.isCancelled()) { + playDenyEffect(event.getPlayer(), event.getBlockPlaced().getLocation().add(0.5, 0.5, 0.5)); + } } @EventHandler(ignoreCancelled = true) @@ -345,6 +355,10 @@ public void onPlayerInteract(PlayerInteractEvent event) { } } + if (event.isCancelled()) { + playDenyEffect(event.getPlayer(), clicked.getLocation().add(0.5, 1, 0.5)); + } + case LEFT_CLICK_AIR: case RIGHT_CLICK_AIR: if (item != null && !item.getType().isBlock() && Events.fireAndTestCancel(new UseItemEvent(event, cause, player.getWorld(), item))) { @@ -402,6 +416,8 @@ public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { Events.fireToCancel(event, new PlaceBlockEvent(event, create(player), blockAffected.getLocation(), blockMaterial)); Events.fireToCancel(event, new UseItemEvent(event, create(player), player.getWorld(), item)); } + + playDenyEffect(event.getPlayer(), blockAffected.getLocation().add(0.5, 0.5, 0.5)); } @EventHandler(ignoreCancelled = true) @@ -415,6 +431,8 @@ public void onPlayerBucketFill(PlayerBucketFillEvent event) { Events.fireToCancel(event, new BreakBlockEvent(event, create(player), blockAffected)); Events.fireToCancel(event, new UseItemEvent(event, create(player), player.getWorld(), item)); } + + playDenyEffect(event.getPlayer(), blockAffected.getLocation().add(0.5, 1, 0.5)); } // TODO: Handle EntityPortalEnterEvent @@ -586,6 +604,11 @@ public void onEntityDamage(EntityDamageEvent event) { } } + if (event.isCancelled() && damager instanceof Player) { + Player player = (Player) damager; + playDenyEffect(player, event.getEntity().getLocation().add(0, 1, 0)); + } + } else { Events.fireToCancel(event, new DamageEntityEvent(event, Cause.unknown(), event.getEntity())); } @@ -795,4 +818,9 @@ private static void handleInventoryHolderUse(T o } } + private void playDenyEffect(Player player, Location location) { + //player.playSound(location, Sound.SUCCESSFUL_HIT, 0.2f, 0.4f); + player.playEffect(location, Effect.SMOKE, BlockFace.UP); + } + }