--- ../src-base/minecraft/net/minecraftforge/event/world/BlockEvent.java +++ ../src-work/minecraft/net/minecraftforge/event/world/BlockEvent.java @@ -16,6 +16,11 @@ import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.util.BlockSnapshot; +// Cauldron start +import org.bukkit.craftbukkit.event.CraftEventFactory; +import net.minecraft.entity.player.EntityPlayerMP; +// Cauldron end + public class BlockEvent extends Event { private static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("forge.debugBlockEvent", "false")); @@ -80,17 +85,18 @@ super(x, y, z, world, block, blockMetadata); this.player = player; - if (block == null || !ForgeHooks.canHarvestBlock(block, player, blockMetadata) || // Handle empty block or player unable to break block scenario - block.canSilkHarvest(world, player, x, y, z, blockMetadata) && EnchantmentHelper.getSilkTouchModifier(player)) // If the block is being silk harvested, the exp dropped is 0 + // Cauldron start - handle event on bukkit side + org.bukkit.event.block.BlockBreakEvent bukkitEvent = CraftEventFactory.callBlockBreakEvent(world, x, y, z, block, blockMetadata, + (EntityPlayerMP) player); + if (bukkitEvent.isCancelled()) { - this.exp = 0; + this.setCanceled(true); } else { - int meta = block.getDamageValue(world, x, y, z); - int bonusLevel = EnchantmentHelper.getFortuneModifier(player); - this.exp = block.getExpDrop(world, meta, bonusLevel); + this.exp = bukkitEvent.getExpToDrop(); } + // Cauldron end } public EntityPlayer getPlayer()