summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java6
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java10
2 files changed, 16 insertions, 0 deletions
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));