diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java index 3fb680b9da..d1a903f077 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -434,6 +434,16 @@ public class World implements IBlockAccess { Block block = Block.byId[this.getTypeId(i, j, k)]; if (block != null) { + // CraftBukkit start + if (world != null) { + BlockPhysicsEvent event = new BlockPhysicsEvent(Event.Type.BLOCK_PHYSICS, world.getBlockAt(i, j, k), l); + server.getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + } + // CraftBukkit stop + block.b(this, i, j, k, l); } } @@ -1623,7 +1633,18 @@ public class World implements IBlockAccess { axisalignedbb = null; } - return axisalignedbb != null && !this.a(axisalignedbb) ? false : (block != Block.WATER && block != Block.STATIONARY_WATER && block != Block.LAVA && block != Block.STATIONARY_LAVA && block != Block.FIRE && block != Block.SNOW ? i > 0 && block == null && block1.a(this, j, k, l) : true); + // Craftbukkit start - We dont want to allow the user to override the bounding box check + boolean defaultReturn = axisalignedbb != null && !this.a(axisalignedbb) ? false : (block != Block.WATER && block != Block.STATIONARY_WATER && block != Block.LAVA && block != Block.STATIONARY_LAVA && block != Block.FIRE && block != Block.SNOW ? i > 0 && block == null && block1.a(this, j, k, l) : true); + + if (!defaultReturn) { + return false; + } + + BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j, k, l), i1, defaultReturn); + server.getPluginManager().callEvent(event); + + return event.isBuildable(); + // CraftBukkit end } public PathEntity a(Entity entity, Entity entity1, float f) { diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 8a18621d43..04b75e6cb2 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -125,63 +125,4 @@ public class WorldServer extends World implements BlockChangeDelegate { super.c(i, j, k, l, i1); this.D.f.a((double) i, (double) j, (double) k, 64.0D, new Packet54PlayNoteBlock(i, j, k, l, i1)); } - - // XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED! - // XXX: done because it calls private k() - @Override - public void h(int i, int j, int k, int l) { - this.l(i - 1, j, k, l); - this.l(i + 1, j, k, l); - this.l(i, j - 1, k, l); - this.l(i, j + 1, k, l); - this.l(i, j, k - 1, l); - this.l(i, j, k + 1, l); - } - - // XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED! - private void l(int i, int j, int k, int l) { - if (!this.i && !this.isStatic) { - Block block = Block.byId[this.getTypeId(i, j, k)]; - - if (block != null) { - // CraftBukkit start - if (world != null) { - BlockPhysicsEvent event = new BlockPhysicsEvent(Event.Type.BLOCK_PHYSICS, world.getBlockAt(i, j, k), l); - server.getPluginManager().callEvent(event); - if (event.isCancelled()) { - return; - } - } - // CraftBukkit stop - - block.b(this, i, j, k, l); - } - } - } - - // XXX: the following method is straight from the World.java with tweaks as noted. KEEP THEM UPDATED! - @Override - public boolean a(int i, int j, int k, int l, boolean flag) { - int i1 = this.getTypeId(j, k, l); - Block block = Block.byId[i1]; - Block block1 = Block.byId[i]; - AxisAlignedBB axisalignedbb = block1.d(this, j, k, l); - - if (flag) { - axisalignedbb = null; - } - - // Craftbukkit start - We dont want to allow the user to override the bounding box check - boolean defaultReturn = axisalignedbb != null && !this.a(axisalignedbb) ? false : (block != Block.WATER && block != Block.STATIONARY_WATER && block != Block.LAVA && block != Block.STATIONARY_LAVA && block != Block.FIRE && block != Block.SNOW ? i > 0 && block == null && block1.a(this, j, k, l) : true); - - if (!defaultReturn) { - return false; - } - - BlockCanBuildEvent event = new BlockCanBuildEvent(Type.BLOCK_CANBUILD, getWorld().getBlockAt(j, k, l), i1, defaultReturn); - server.getPluginManager().callEvent(event); - - return event.isBuildable(); - // CraftBukkit end - } }