diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java index 97be70cd8f..c5bf0c0b60 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 9684591ac0..d6550e81ed 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));