diff --git a/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java b/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java index 1eec4b2d..d5852296 100644 --- a/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java +++ b/src/com/sk89q/worldguard/bukkit/WorldGuardBlockListener.java @@ -61,15 +61,41 @@ public WorldGuardBlockListener(WorldGuardPlugin plugin) { */ @Override public void onBlockDamage(BlockDamageEvent event) { + if (event.isCancelled()) { + return; + } - if(event.isCancelled()) - { + Player player = event.getPlayer(); + Block blockDamaged = event.getBlock(); + + if (plugin.useRegions && blockDamaged.getType() == Material.CAKE_BLOCK) { + Vector pt = toVector(blockDamaged); + LocalPlayer localPlayer = plugin.wrapPlayer(player); + + if (!plugin.hasPermission(player, "/regionbypass") + && !plugin.regionManager.getApplicableRegions(pt).canBuild(localPlayer)) { + player.sendMessage(ChatColor.DARK_RED + "You're not invited to this tea party!"); + + event.setCancelled(true); + return; + } + } + } + + /** + * Called when a block is destroyed by a player. + * + * @param event Relevant event details + */ + @Override + public void onBlockBreak(BlockBreakEvent event) { + if (event.isCancelled()) { return; } Player player = event.getPlayer(); - if (!plugin.itemDurability && event.getDamageLevel() == BlockDamageLevel.BROKEN) { + if (!plugin.itemDurability) { ItemStack held = player.getItemInHand(); if (held.getTypeId() > 0) { held.setDurability((short) -1); @@ -77,7 +103,7 @@ public void onBlockDamage(BlockDamageEvent event) { } } - if (plugin.useRegions && event.getDamageLevel() == BlockDamageLevel.BROKEN) { + if (plugin.useRegions) { Vector pt = BukkitUtil.toVector(event.getBlock()); LocalPlayer localPlayer = plugin.wrapPlayer(player); @@ -89,7 +115,7 @@ public void onBlockDamage(BlockDamageEvent event) { } } - if (plugin.blacklist != null && event.getDamageLevel() == BlockDamageLevel.BROKEN) { + if (plugin.blacklist != null) { if (!plugin.blacklist.check( new BlockBreakBlacklistEvent(plugin.wrapPlayer(player), toVector(event.getBlock()), @@ -106,22 +132,6 @@ public void onBlockDamage(BlockDamageEvent event) { return; } } - - Block blockDamaged = event.getBlock(); - if (plugin.useRegions && blockDamaged.getType() == Material.CAKE_BLOCK) { - - - Vector pt = toVector(blockDamaged); - LocalPlayer localPlayer = plugin.wrapPlayer(player); - - if (!plugin.hasPermission(player, "/regionbypass") - && !plugin.regionManager.getApplicableRegions(pt).canBuild(localPlayer)) { - player.sendMessage(ChatColor.DARK_RED + "You don't have permission for this area."); - - event.setCancelled(true); - return; - } - } } /** diff --git a/src/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/src/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index 96280ea3..dfe70150 100644 --- a/src/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/src/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -191,6 +191,7 @@ public void onDisable() { */ private void registerEvents() { registerEvent(Event.Type.BLOCK_DAMAGED, blockListener, Priority.High); + registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.High); registerEvent(Event.Type.BLOCK_FLOW, blockListener, Priority.Normal); registerEvent(Event.Type.BLOCK_IGNITE, blockListener, Priority.High); registerEvent(Event.Type.BLOCK_PHYSICS, blockListener, Priority.Normal);