From f6e6798f8d9e75d4f9e0fa826cb6f23888953c39 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Tue, 2 Sep 2014 17:02:03 +0200 Subject: [PATCH] Fire blockbreak event --- src/main/java/tconstruct/items/tools/Excavator.java | 8 ++++++++ src/main/java/tconstruct/items/tools/Hammer.java | 10 +++++++++- src/main/java/tconstruct/items/tools/LumberAxe.java | 8 ++++++++ .../java/tconstruct/library/tools/HarvestTool.java | 8 ++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/tconstruct/items/tools/Excavator.java b/src/main/java/tconstruct/items/tools/Excavator.java index b588afbb5e5..691e4f8d836 100644 --- a/src/main/java/tconstruct/items/tools/Excavator.java +++ b/src/main/java/tconstruct/items/tools/Excavator.java @@ -9,6 +9,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; import tconstruct.library.ActiveToolMod; import tconstruct.library.TConstructRegistry; import tconstruct.library.tools.AbilityHelper; @@ -206,6 +208,12 @@ public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPl cancelHarvest = true; } + // send blockbreak event + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x, y, z, world, localBlock, localMeta, player); + event.setCanceled(cancelHarvest); + MinecraftForge.EVENT_BUS.post(event); + cancelHarvest = event.isCanceled(); + if (!cancelHarvest) { if (localBlock != null && !(localHardness < 0)) diff --git a/src/main/java/tconstruct/items/tools/Hammer.java b/src/main/java/tconstruct/items/tools/Hammer.java index 609ff555fd2..9a0ba892021 100644 --- a/src/main/java/tconstruct/items/tools/Hammer.java +++ b/src/main/java/tconstruct/items/tools/Hammer.java @@ -14,6 +14,8 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; import tconstruct.library.ActiveToolMod; import tconstruct.library.TConstructRegistry; import tconstruct.library.crafting.ToolBuilder; @@ -296,7 +298,7 @@ public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPl int hlvl = -1; if (localBlock.getHarvestTool(localMeta) != null && localBlock.getHarvestTool(localMeta).equals(this.getHarvestType())) hlvl = localBlock.getHarvestLevel(localMeta); - float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, xPos, yPos, zPos); + float localHardness = localBlock.getBlockHardness(world, xPos, yPos, zPos); //Choose blocks that aren't too much harder than the first block. Stone: 2.0, Ores: 3.0 if (hlvl <= toolLevel && localHardness - 1.5 <= blockHardness) @@ -308,6 +310,12 @@ public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPl cancelHarvest = true; } + // send blockbreak event + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x, y, z, world, localBlock, localMeta, player); + event.setCanceled(cancelHarvest); + MinecraftForge.EVENT_BUS.post(event); + cancelHarvest = event.isCanceled(); + if (!cancelHarvest) { if (localBlock != null && !(localHardness < 0)) diff --git a/src/main/java/tconstruct/items/tools/LumberAxe.java b/src/main/java/tconstruct/items/tools/LumberAxe.java index 3195234aa66..e23b81a06ad 100644 --- a/src/main/java/tconstruct/items/tools/LumberAxe.java +++ b/src/main/java/tconstruct/items/tools/LumberAxe.java @@ -9,6 +9,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; import tconstruct.library.ActiveToolMod; import tconstruct.library.TConstructRegistry; import tconstruct.library.tools.AbilityHelper; @@ -176,6 +178,12 @@ void breakTree (World world, int x, int y, int z, ItemStack stack, NBTTagCompoun cancelHarvest = true; } + // send blockbreak event + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x, y, z, world, localBlock, localMeta, player); + event.setCanceled(cancelHarvest); + MinecraftForge.EVENT_BUS.post(event); + cancelHarvest = event.isCanceled(); + if (cancelHarvest) { breakTree(world, xPos, yPos, zPos, stack, tags, bID, meta, player); diff --git a/src/main/java/tconstruct/library/tools/HarvestTool.java b/src/main/java/tconstruct/library/tools/HarvestTool.java index 5117c5946ec..bc35314491f 100644 --- a/src/main/java/tconstruct/library/tools/HarvestTool.java +++ b/src/main/java/tconstruct/library/tools/HarvestTool.java @@ -17,6 +17,8 @@ import net.minecraft.network.INetHandler; import net.minecraft.network.play.client.C07PacketPlayerDigging; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; import tconstruct.library.ActiveToolMod; import tconstruct.library.TConstructRegistry; @@ -59,6 +61,12 @@ public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPl cancelHarvest = true; } + // send blockbreak event + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x, y, z, world, block, meta, player); + event.setCanceled(cancelHarvest); + MinecraftForge.EVENT_BUS.post(event); + cancelHarvest = event.isCanceled(); + if (!cancelHarvest) { if (block != null)