mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-09-07 04:48:07 +02:00
Updated block damage event handling to work around issues.
This commit is contained in:
parent
feacf3af7b
commit
d584fba31c
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user