diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java index 3dd9a4fd23..559d4498c4 100644 --- a/src/main/java/net/minecraft/server/Explosion.java +++ b/src/main/java/net/minecraft/server/Explosion.java @@ -29,6 +29,7 @@ public class Explosion { public Entity e; public float f; public Set g = new HashSet(); + public boolean wasCanceled = false; public Explosion(World world, Entity entity, double d0, double d1, double d2, float f) { this.i = world; @@ -199,6 +200,7 @@ public class Explosion { server.getPluginManager().callEvent(event); if (event.isCancelled()) { + wasCanceled = true; return; } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 18ab1526c4..91914ab885 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -113,6 +113,12 @@ public class WorldServer extends World implements BlockChangeDelegate { public Explosion a(Entity entity, double d0, double d1, double d2, float f, boolean flag) { Explosion explosion = super.a(entity, d0, d1, d2, f, flag); + // Craftbukkit start + if(explosion.wasCanceled) { + return explosion; + } + // Craftbukkit end + this.D.f.a(d0, d1, d2, 64.0D, new Packet60Explosion(d0, d1, d2, f, explosion.g)); return explosion; }