diff options
author | Tahg <tahgtahv@gmail.com> | 2011-02-24 22:37:47 -0500 |
---|---|---|
committer | Tahg <tahgtahv@gmail.com> | 2011-02-24 22:37:47 -0500 |
commit | e53fd1367cda547a14fcff89ab41a3f7daad2eac (patch) | |
tree | 6a255d6bad05ba4317ec1483258aa3085f23cece | |
parent | 13f55ce0c8b5e7ac86c6f0ad50d7cb1f5b796976 (diff) | |
download | craftbukkit-e53fd1367cda547a14fcff89ab41a3f7daad2eac.tar craftbukkit-e53fd1367cda547a14fcff89ab41a3f7daad2eac.tar.gz craftbukkit-e53fd1367cda547a14fcff89ab41a3f7daad2eac.tar.lz craftbukkit-e53fd1367cda547a14fcff89ab41a3f7daad2eac.tar.xz craftbukkit-e53fd1367cda547a14fcff89ab41a3f7daad2eac.zip |
possible fix for block breaking bug
-rw-r--r-- | src/main/java/net/minecraft/server/ItemInWorldManager.java | 3 | ||||
-rw-r--r-- | src/main/java/net/minecraft/server/NetServerHandler.java | 55 |
2 files changed, 32 insertions, 26 deletions
diff --git a/src/main/java/net/minecraft/server/ItemInWorldManager.java b/src/main/java/net/minecraft/server/ItemInWorldManager.java index 083d2ce3..de770038 100644 --- a/src/main/java/net/minecraft/server/ItemInWorldManager.java +++ b/src/main/java/net/minecraft/server/ItemInWorldManager.java @@ -112,7 +112,8 @@ public class ItemInWorldManager { server.getPluginManager().callEvent(event); if (event.isCancelled()) { - return true; + MinecraftServer.a.info("A plugin cancelled the block break event"); + return false; } } // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/NetServerHandler.java b/src/main/java/net/minecraft/server/NetServerHandler.java index b49d8765..7b62d346 100644 --- a/src/main/java/net/minecraft/server/NetServerHandler.java +++ b/src/main/java/net/minecraft/server/NetServerHandler.java @@ -328,7 +328,7 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (packet14blockdig.e == 0) { // CraftBukkit start if (i1 > this.d.spawnProtection || flag) { - if (blockId > 0) { +// if (blockId > 0) { BlockDamageEvent event; // If the amount of damage that the player is going to do to the block // is >= 1, then the block is going to break (eg, flowers, torches) @@ -347,7 +347,10 @@ public class NetServerHandler extends NetHandler implements ICommandListener { if (!event.isCancelled()) { this.e.c.a(i, j, k); } - } + else { + MinecraftServer.a.info("A plugin cancelled the block start break event"); + } +// } } } else if (packet14blockdig.e == 2) { // CraftBukkit start - Get last block that the player hit @@ -357,31 +360,33 @@ public class NetServerHandler extends NetHandler implements ICommandListener { server.getPluginManager().callEvent(event); if (!event.isCancelled()) { this.e.c.b(i, j, k); + } else { + MinecraftServer.a.info("A plugin cancelled the block stop break event"); } // CraftBukkit end - } else if (packet14blockdig.e == 1) { - // CraftBukkit start - if (i1 > this.d.spawnProtection || flag) { - BlockDamageEvent event; - // If the amount of damage going to the block plus the current amount - // of damage is greater than 1, the block is going to break. - if (this.e.c.c + damage >= 1.0F) { - // if we are destroying either a redstone wire with a current greater than 0 or - // a redstone torch that is on, then we should notify plugins that this block has - // returned to a current value of 0 (since it will once the redstone is destroyed) - if ((blockId == Block.REDSTONE_WIRE.id && block.getRawData() > 0) || blockId == Block.REDSTONE_TORCH_ON.id) { - server.getPluginManager().callEvent( new BlockRedstoneEvent(block, (blockId == Block.REDSTONE_WIRE.id ? block.getRawData() : 15), 0)); - } - event = new BlockDamageEvent(Type.BLOCK_DAMAGED, block, BlockDamageLevel.BROKEN, player); - } else { - event = new BlockDamageEvent(Type.BLOCK_DAMAGED, block, BlockDamageLevel.DIGGING, player); - } - server.getPluginManager().callEvent(event); - if (event.isCancelled()) { - this.e.c.c = 0; // Reset the amount of damage if stopping break. - } - } - // CraftBukkit end +// } else if (packet14blockdig.e == 1) { +// // CraftBukkit start +// if (i1 > this.d.spawnProtection || flag) { +// BlockDamageEvent event; +// // If the amount of damage going to the block plus the current amount +// // of damage is greater than 1, the block is going to break. +// if (this.e.c.c + damage >= 1.0F) { +// // if we are destroying either a redstone wire with a current greater than 0 or +// // a redstone torch that is on, then we should notify plugins that this block has +// // returned to a current value of 0 (since it will once the redstone is destroyed) +// if ((blockId == Block.REDSTONE_WIRE.id && block.getRawData() > 0) || blockId == Block.REDSTONE_TORCH_ON.id) { +// server.getPluginManager().callEvent( new BlockRedstoneEvent(block, (blockId == Block.REDSTONE_WIRE.id ? block.getRawData() : 15), 0)); +// } +// event = new BlockDamageEvent(Type.BLOCK_DAMAGED, block, BlockDamageLevel.BROKEN, player); +// } else { +// event = new BlockDamageEvent(Type.BLOCK_DAMAGED, block, BlockDamageLevel.DIGGING, player); +// } +// server.getPluginManager().callEvent(event); +// if (event.isCancelled()) { +// this.e.c.c = 0; // Reset the amount of damage if stopping break. +// } +// } +// // CraftBukkit end } else if (packet14blockdig.e == 3) { double d4 = this.e.locX - ((double) i + 0.5D); double d5 = this.e.locY - ((double) j + 0.5D); |