diff --git a/src/main/java/appeng/block/AEBaseTileBlock.java b/src/main/java/appeng/block/AEBaseTileBlock.java index fcf264b82de..f9f0ade9fa3 100644 --- a/src/main/java/appeng/block/AEBaseTileBlock.java +++ b/src/main/java/appeng/block/AEBaseTileBlock.java @@ -49,7 +49,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.world.BlockEvent; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -259,6 +261,13 @@ public boolean onBlockActivated( final World w, final int x, final int y, final return false; } + BlockEvent.BreakEvent event = new BlockEvent.BreakEvent( x, y, z, w, this, 0, player ); + MinecraftForge.EVENT_BUS.post( event ); + if( event.isCanceled() ) + { + return false; + } + final ItemStack op = new ItemStack( this ); for( final ItemStack ol : drops ) { diff --git a/src/main/java/appeng/parts/PartPlacement.java b/src/main/java/appeng/parts/PartPlacement.java index 5802f76a839..ecc77ede505 100644 --- a/src/main/java/appeng/parts/PartPlacement.java +++ b/src/main/java/appeng/parts/PartPlacement.java @@ -50,6 +50,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.BlockSnapshot; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -104,8 +105,11 @@ public static boolean place( final ItemStack held, final int x, final int y, fin final SelectedPart sp = selectPart( player, host, mop.hitVec.addVector( -mop.blockX, -mop.blockY, -mop.blockZ ) ); BlockEvent.BreakEvent event = new BlockEvent.BreakEvent( x, y, z, world, block, world.getBlockMetadata( x, y, z ), player ); - MinecraftForge.EVENT_BUS.post(event); - if(event.isCanceled()) return true; + MinecraftForge.EVENT_BUS.post( event ); + if( event.isCanceled() ) + { + return false; + } if( sp.part != null ) { @@ -361,6 +365,12 @@ else if( host != null && !host.canAddPart( held, side ) ) return false; } + BlockEvent.PlaceEvent event = new BlockEvent.PlaceEvent( BlockSnapshot.getBlockSnapshot( world, x, y, z ), world.getBlock( x, y, z ), player ); + MinecraftForge.EVENT_BUS.post( event ); + if( event.isCanceled() ) + { + return false; + } final ForgeDirection mySide = host.addPart( held, side, player ); if( mySide != null ) {