From 06b814fd7ee1a147dc82870ccade90c4ac621059 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Sat, 10 Mar 2012 18:43:35 -0600 Subject: [Bleeding] Added EntityBreakDoorEvent. Fixes BUKKIT-1134 --- .../java/net/minecraft/server/PathfinderGoalBreakDoor.java | 6 ++++++ .../java/org/bukkit/craftbukkit/event/CraftEventFactory.java | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java index 97be70cd..c5bf0c0b 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java @@ -30,6 +30,12 @@ public class PathfinderGoalBreakDoor extends PathfinderGoalDoorInteract { } if (--this.i == 0 && this.a.world.difficulty == 3) { + // CraftBukkit start + if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreakDoorEvent(this.a, this.b, this.c, this.d).isCancelled()) { + this.c(); + return; + } + // CraftBukkit end this.a.world.setTypeId(this.b, this.c, this.d, 0); this.a.world.triggerEffect(1012, this.b, this.c, this.d, 0); this.a.world.triggerEffect(2001, this.b, this.c, this.d, this.e.id); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 9684591a..d6550e81 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -441,6 +441,16 @@ public class CraftEventFactory { return event; } + public static EntityBreakDoorEvent callEntityBreakDoorEvent(Entity entity, int x, int y, int z) { + org.bukkit.entity.Entity entity1 = entity.getBukkitEntity(); + Block block = entity1.getWorld().getBlockAt(x, y, z); + + EntityBreakDoorEvent event = new EntityBreakDoorEvent((LivingEntity) entity1, block); + entity1.getServer().getPluginManager().callEvent(event); + + return event; + } + public static Container callInventoryOpenEvent(EntityPlayer player, Container container) { if (player.activeContainer != player.defaultContainer) { // fire INVENTORY_CLOSE if one already open player.netServerHandler.handleContainerClose(new Packet101CloseWindow(player.activeContainer.windowId)); -- cgit v1.2.3