From cfb63644b48edcb60b2a8ea76e825b69ac349ca6 Mon Sep 17 00:00:00 2001 From: AEnterprise Date: Wed, 10 Sep 2014 14:43:06 +0200 Subject: [PATCH] create events for external research --- .../api/events/BlockInteractionEvent.java | 17 +++++ .../api/events/BlockPlacedDownEvent.java | 17 +++++ .../api/events/PipePlacedEvent.java | 15 ++++ .../buildcraft/builders/BlockArchitect.java | 7 ++ .../builders/BlockBlueprintLibrary.java | 6 ++ common/buildcraft/builders/BlockBuilder.java | 6 ++ .../builders/BlockConstructionMarker.java | 7 ++ common/buildcraft/builders/BlockFiller.java | 7 ++ common/buildcraft/builders/BlockMarker.java | 7 ++ .../builders/urbanism/BlockUrbanist.java | 7 ++ .../buildcraft/commander/BlockRequester.java | 7 ++ .../buildcraft/commander/BlockZonePlan.java | 7 ++ common/buildcraft/core/BlockBuildCraft.java | 10 ++- common/buildcraft/energy/BlockEngine.java | 26 ++++--- .../factory/BlockAutoWorkbench.java | 6 ++ common/buildcraft/factory/BlockHopper.java | 7 ++ common/buildcraft/factory/BlockRefinery.java | 7 ++ common/buildcraft/factory/BlockTank.java | 7 ++ common/buildcraft/silicon/BlockLaser.java | 17 ++--- .../buildcraft/silicon/BlockLaserTable.java | 25 ++++--- .../transport/BlockGenericPipe.java | 72 +++++++++---------- common/buildcraft/transport/ItemPipe.java | 25 +++---- 22 files changed, 228 insertions(+), 84 deletions(-) create mode 100644 api/buildcraft/api/events/BlockInteractionEvent.java create mode 100644 api/buildcraft/api/events/BlockPlacedDownEvent.java create mode 100644 api/buildcraft/api/events/PipePlacedEvent.java diff --git a/api/buildcraft/api/events/BlockInteractionEvent.java b/api/buildcraft/api/events/BlockInteractionEvent.java new file mode 100644 index 00000000..7b78896b --- /dev/null +++ b/api/buildcraft/api/events/BlockInteractionEvent.java @@ -0,0 +1,17 @@ +package buildcraft.api.events; + +import cpw.mods.fml.common.eventhandler.Cancelable; +import cpw.mods.fml.common.eventhandler.Event; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; + +@Cancelable +public class BlockInteractionEvent extends Event { + public EntityPlayer player; + public Block block; + + public BlockInteractionEvent(EntityPlayer player, Block block){ + this.player = player; + this.block = block; + } +} diff --git a/api/buildcraft/api/events/BlockPlacedDownEvent.java b/api/buildcraft/api/events/BlockPlacedDownEvent.java new file mode 100644 index 00000000..4c3b2e5b --- /dev/null +++ b/api/buildcraft/api/events/BlockPlacedDownEvent.java @@ -0,0 +1,17 @@ +package buildcraft.api.events; + +import cpw.mods.fml.common.eventhandler.Cancelable; +import cpw.mods.fml.common.eventhandler.Event; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; + +@Cancelable +public class BlockPlacedDownEvent extends Event { + public EntityPlayer player; + public Block block; + + public BlockPlacedDownEvent(EntityPlayer player, Block block){ + this.player = player; + this.block = block; + } +} diff --git a/api/buildcraft/api/events/PipePlacedEvent.java b/api/buildcraft/api/events/PipePlacedEvent.java new file mode 100644 index 00000000..d3abadda --- /dev/null +++ b/api/buildcraft/api/events/PipePlacedEvent.java @@ -0,0 +1,15 @@ +package buildcraft.api.events; + +import cpw.mods.fml.common.eventhandler.Event; +import net.minecraft.entity.player.EntityPlayer; + +public class PipePlacedEvent extends Event { + public EntityPlayer player; + public String pipeType; + + public PipePlacedEvent(EntityPlayer player, String pipeType){ + this.player = player; + this.pipeType = pipeType; + } + +} diff --git a/common/buildcraft/builders/BlockArchitect.java b/common/buildcraft/builders/BlockArchitect.java index 5aff67a7..19f4712d 100644 --- a/common/buildcraft/builders/BlockArchitect.java +++ b/common/buildcraft/builders/BlockArchitect.java @@ -8,6 +8,8 @@ */ package buildcraft.builders; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -47,6 +49,11 @@ public class BlockArchitect extends BlockMultiTexture { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + Item equipped = entityplayer.getCurrentEquippedItem() != null ? entityplayer.getCurrentEquippedItem().getItem() : null; if (equipped instanceof IToolWrench && ((IToolWrench) equipped).canWrench(entityplayer, x, y, z)) { diff --git a/common/buildcraft/builders/BlockBlueprintLibrary.java b/common/buildcraft/builders/BlockBlueprintLibrary.java index df5dc77c..ce16447f 100644 --- a/common/buildcraft/builders/BlockBlueprintLibrary.java +++ b/common/buildcraft/builders/BlockBlueprintLibrary.java @@ -8,6 +8,8 @@ */ package buildcraft.builders; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -44,6 +46,10 @@ public class BlockBlueprintLibrary extends BlockContainer { if (entityplayer.isSneaking()) { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; TileEntity tile = world.getTileEntity(i, j, k); if (tile instanceof TileBlueprintLibrary) { diff --git a/common/buildcraft/builders/BlockBuilder.java b/common/buildcraft/builders/BlockBuilder.java index 6e7fb03f..037fd4ab 100644 --- a/common/buildcraft/builders/BlockBuilder.java +++ b/common/buildcraft/builders/BlockBuilder.java @@ -8,6 +8,8 @@ */ package buildcraft.builders; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -75,6 +77,10 @@ public class BlockBuilder extends BlockContainer { if (entityplayer.isSneaking()) { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; TileEntity tile = world.getTileEntity(x, y, z); TileBuilder builder = tile instanceof TileBuilder ? (TileBuilder) tile : null; diff --git a/common/buildcraft/builders/BlockConstructionMarker.java b/common/buildcraft/builders/BlockConstructionMarker.java index efafa4bc..3041f2b0 100755 --- a/common/buildcraft/builders/BlockConstructionMarker.java +++ b/common/buildcraft/builders/BlockConstructionMarker.java @@ -8,6 +8,8 @@ */ package buildcraft.builders; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; @@ -57,6 +59,11 @@ public class BlockConstructionMarker extends BlockMarker { float par8, float par9) { super.onBlockActivated(world, x, y, z, entityplayer, par6, par7, par8, par9); + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + TileConstructionMarker marker = (TileConstructionMarker) world.getTileEntity(x, y, z); Item equipped = entityplayer.getCurrentEquippedItem() != null ? entityplayer.getCurrentEquippedItem().getItem() diff --git a/common/buildcraft/builders/BlockFiller.java b/common/buildcraft/builders/BlockFiller.java index 1f30994a..4b183d0b 100644 --- a/common/buildcraft/builders/BlockFiller.java +++ b/common/buildcraft/builders/BlockFiller.java @@ -8,6 +8,8 @@ */ package buildcraft.builders; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -51,6 +53,11 @@ public class BlockFiller extends BlockContainer { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + if (!world.isRemote) { entityplayer.openGui(BuildCraftBuilders.instance, GuiIds.FILLER, world, i, j, k); } diff --git a/common/buildcraft/builders/BlockMarker.java b/common/buildcraft/builders/BlockMarker.java index 466e429e..a9344608 100644 --- a/common/buildcraft/builders/BlockMarker.java +++ b/common/buildcraft/builders/BlockMarker.java @@ -8,6 +8,8 @@ */ package buildcraft.builders; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -99,6 +101,11 @@ public class BlockMarker extends BlockContainer { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + TileEntity tile = world.getTileEntity(i, j, k); if (tile instanceof TileMarker) { ((TileMarker) tile).tryConnection(); diff --git a/common/buildcraft/builders/urbanism/BlockUrbanist.java b/common/buildcraft/builders/urbanism/BlockUrbanist.java index 8c689321..5ec2aa49 100755 --- a/common/buildcraft/builders/urbanism/BlockUrbanist.java +++ b/common/buildcraft/builders/urbanism/BlockUrbanist.java @@ -8,6 +8,8 @@ */ package buildcraft.builders.urbanism; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; @@ -37,6 +39,11 @@ public class BlockUrbanist extends BlockBuildCraft { world, i, j, k); } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + return true; } diff --git a/common/buildcraft/commander/BlockRequester.java b/common/buildcraft/commander/BlockRequester.java index 2a2d8276..8d148e8e 100755 --- a/common/buildcraft/commander/BlockRequester.java +++ b/common/buildcraft/commander/BlockRequester.java @@ -8,6 +8,8 @@ */ package buildcraft.commander; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; @@ -45,6 +47,11 @@ public class BlockRequester extends BlockBuildCraft { public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int par6, float par7, float par8, float par9) { + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + if (!world.isRemote) { entityplayer.openGui(BuildCraftBuilders.instance, GuiIds.REQUESTER, world, i, j, k); diff --git a/common/buildcraft/commander/BlockZonePlan.java b/common/buildcraft/commander/BlockZonePlan.java index c88d8c7f..6db21ac7 100755 --- a/common/buildcraft/commander/BlockZonePlan.java +++ b/common/buildcraft/commander/BlockZonePlan.java @@ -8,6 +8,8 @@ */ package buildcraft.commander; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; @@ -45,6 +47,11 @@ public class BlockZonePlan extends BlockBuildCraft { public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int par6, float par7, float par8, float par9) { + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + if (!world.isRemote) { entityplayer.openGui(BuildCraftBuilders.instance, GuiIds.MAP, world, i, j, k); diff --git a/common/buildcraft/core/BlockBuildCraft.java b/common/buildcraft/core/BlockBuildCraft.java index 5bcd2da4..c52e2d56 100644 --- a/common/buildcraft/core/BlockBuildCraft.java +++ b/common/buildcraft/core/BlockBuildCraft.java @@ -8,18 +8,20 @@ */ package buildcraft.core; -import java.util.Random; - +import buildcraft.api.events.BlockPlacedDownEvent; +import buildcraft.core.utils.Utils; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import buildcraft.core.utils.Utils; +import java.util.Random; public abstract class BlockBuildCraft extends BlockContainer { @@ -36,9 +38,11 @@ public abstract class BlockBuildCraft extends BlockContainer { setHardness(5F); } + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, entity, stack); + FMLCommonHandler.instance().bus().post(new BlockPlacedDownEvent((EntityPlayer) entity, world.getBlock(x, y, z))); TileEntity tile = world.getTileEntity(x, y, z); if (tile instanceof TileBuildCraft) { ((TileBuildCraft) tile).onBlockPlacedBy(entity, stack); diff --git a/common/buildcraft/energy/BlockEngine.java b/common/buildcraft/energy/BlockEngine.java index 3500fe2d..5ef25c2d 100644 --- a/common/buildcraft/energy/BlockEngine.java +++ b/common/buildcraft/energy/BlockEngine.java @@ -8,9 +8,14 @@ */ package buildcraft.energy; -import java.util.List; -import java.util.Random; - +import buildcraft.BuildCraftCore; +import buildcraft.api.events.BlockInteractionEvent; +import buildcraft.core.BlockBuildCraft; +import buildcraft.core.ICustomHighlight; +import buildcraft.core.IItemPipe; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -26,16 +31,10 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.BuildCraftCore; -import buildcraft.core.BlockBuildCraft; -import buildcraft.core.ICustomHighlight; -import buildcraft.core.IItemPipe; +import java.util.List; +import java.util.Random; public class BlockEngine extends BlockBuildCraft implements ICustomHighlight { @@ -129,6 +128,11 @@ public class BlockEngine extends BlockBuildCraft implements ICustomHighlight { // return false; // } + BlockInteractionEvent event = new BlockInteractionEvent(player, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + // Do not open guis when having a pipe in hand if (player.getCurrentEquippedItem() != null) { if (player.getCurrentEquippedItem().getItem() instanceof IItemPipe) { diff --git a/common/buildcraft/factory/BlockAutoWorkbench.java b/common/buildcraft/factory/BlockAutoWorkbench.java index d65fa30b..a5b4a53c 100644 --- a/common/buildcraft/factory/BlockAutoWorkbench.java +++ b/common/buildcraft/factory/BlockAutoWorkbench.java @@ -8,6 +8,8 @@ */ package buildcraft.factory; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -45,6 +47,10 @@ public class BlockAutoWorkbench extends BlockBuildCraft { @Override public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int par6, float par7, float par8, float par9) { super.onBlockActivated(world, i, j, k, entityplayer, par6, par7, par8, par9); + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; // Drop through if the player is sneaking if (entityplayer.isSneaking()) { diff --git a/common/buildcraft/factory/BlockHopper.java b/common/buildcraft/factory/BlockHopper.java index 1e2546d4..bec2fcfb 100644 --- a/common/buildcraft/factory/BlockHopper.java +++ b/common/buildcraft/factory/BlockHopper.java @@ -8,6 +8,8 @@ */ package buildcraft.factory; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -61,6 +63,11 @@ public class BlockHopper extends BlockBuildCraft { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + if (entityplayer.getCurrentEquippedItem() != null) { if (entityplayer.getCurrentEquippedItem().getItem() instanceof IItemPipe) { return false; diff --git a/common/buildcraft/factory/BlockRefinery.java b/common/buildcraft/factory/BlockRefinery.java index c8f25e18..87a0f95c 100644 --- a/common/buildcraft/factory/BlockRefinery.java +++ b/common/buildcraft/factory/BlockRefinery.java @@ -8,6 +8,8 @@ */ package buildcraft.factory; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -108,6 +110,10 @@ public class BlockRefinery extends BlockContainer { if (!(tile instanceof TileRefinery)) { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(player, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; ItemStack current = player.getCurrentEquippedItem(); Item equipped = current != null ? current.getItem() : null; @@ -127,6 +133,7 @@ public class BlockRefinery extends BlockContainer { } } + if (!world.isRemote) { player.openGui(BuildCraftFactory.instance, GuiIds.REFINERY, world, x, y, z); } diff --git a/common/buildcraft/factory/BlockTank.java b/common/buildcraft/factory/BlockTank.java index 84a2291b..6eff719d 100644 --- a/common/buildcraft/factory/BlockTank.java +++ b/common/buildcraft/factory/BlockTank.java @@ -8,6 +8,8 @@ */ package buildcraft.factory; +import buildcraft.api.events.BlockInteractionEvent; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -89,6 +91,11 @@ public class BlockTank extends BlockContainer { public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int par6, float par7, float par8, float par9) { ItemStack current = entityplayer.inventory.getCurrentItem(); + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + if (current != null) { FluidStack liquid = FluidContainerRegistry.getFluidForFilledItem(current); diff --git a/common/buildcraft/silicon/BlockLaser.java b/common/buildcraft/silicon/BlockLaser.java index 4fa678db..248c2b86 100644 --- a/common/buildcraft/silicon/BlockLaser.java +++ b/common/buildcraft/silicon/BlockLaser.java @@ -8,9 +8,11 @@ */ package buildcraft.silicon; -import java.util.List; - -import net.minecraft.block.BlockContainer; +import buildcraft.core.BlockBuildCraft; +import buildcraft.core.CreativeTabBuildCraft; +import buildcraft.core.ICustomHighlight; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; @@ -22,16 +24,11 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.core.CreativeTabBuildCraft; -import buildcraft.core.ICustomHighlight; +import java.util.List; -public class BlockLaser extends BlockContainer implements ICustomHighlight { +public class BlockLaser extends BlockBuildCraft implements ICustomHighlight { private static final AxisAlignedBB[][] boxes = { {AxisAlignedBB.getBoundingBox(0.0, 0.75, 0.0, 1.0, 1.0, 1.0), AxisAlignedBB.getBoundingBox(0.3125, 0.1875, 0.3125, 0.6875, 0.75, 0.6875)}, // -Y diff --git a/common/buildcraft/silicon/BlockLaserTable.java b/common/buildcraft/silicon/BlockLaserTable.java index 29406781..8341d8fe 100644 --- a/common/buildcraft/silicon/BlockLaserTable.java +++ b/common/buildcraft/silicon/BlockLaserTable.java @@ -8,10 +8,15 @@ */ package buildcraft.silicon; -import java.util.List; - +import buildcraft.BuildCraftSilicon; +import buildcraft.api.events.BlockInteractionEvent; +import buildcraft.core.BlockBuildCraft; +import buildcraft.core.CreativeTabBuildCraft; +import buildcraft.core.utils.Utils; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; @@ -22,14 +27,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; -import buildcraft.BuildCraftSilicon; -import buildcraft.core.CreativeTabBuildCraft; -import buildcraft.core.utils.Utils; - -public class BlockLaserTable extends BlockContainer { +public class BlockLaserTable extends BlockBuildCraft { @SideOnly(Side.CLIENT) private IIcon[][] icons; @@ -63,6 +63,11 @@ public class BlockLaserTable extends BlockContainer { return false; } + BlockInteractionEvent event = new BlockInteractionEvent(entityplayer, this); + FMLCommonHandler.instance().bus().post(event); + if (event.isCanceled()) + return false; + if (!world.isRemote) { int meta = world.getBlockMetadata(i, j, k); entityplayer.openGui(BuildCraftSilicon.instance, meta, world, i, j, k); diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java index ed2eafc6..5ff9953d 100644 --- a/common/buildcraft/transport/BlockGenericPipe.java +++ b/common/buildcraft/transport/BlockGenericPipe.java @@ -8,14 +8,33 @@ */ package buildcraft.transport; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Random; - +import buildcraft.BuildCraftTransport; +import buildcraft.api.core.BCLog; +import buildcraft.api.core.BlockIndex; +import buildcraft.api.events.PipePlacedEvent; +import buildcraft.api.gates.GateExpansions; +import buildcraft.api.gates.IGateExpansion; +import buildcraft.api.tools.IToolWrench; +import buildcraft.api.transport.PipeWire; +import buildcraft.core.BlockBuildCraft; +import buildcraft.core.CoreConstants; +import buildcraft.core.CreativeTabBuildCraft; +import buildcraft.core.ItemMapLocation; +import buildcraft.core.ItemRobot; +import buildcraft.core.TileBuffer; +import buildcraft.core.robots.DockingStation; +import buildcraft.core.robots.EntityRobot; +import buildcraft.core.utils.MatrixTranformations; +import buildcraft.core.utils.Utils; +import buildcraft.transport.gates.GateDefinition; +import buildcraft.transport.gates.GateFactory; +import buildcraft.transport.gates.ItemGate; +import buildcraft.transport.render.PipeRendererWorld; +import buildcraft.transport.utils.FacadeMatrix; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; @@ -36,35 +55,15 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; - -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.BuildCraftTransport; -import buildcraft.api.core.BCLog; -import buildcraft.api.core.BlockIndex; -import buildcraft.api.gates.GateExpansions; -import buildcraft.api.gates.IGateExpansion; -import buildcraft.api.tools.IToolWrench; -import buildcraft.api.transport.PipeWire; -import buildcraft.core.BlockBuildCraft; -import buildcraft.core.CoreConstants; -import buildcraft.core.CreativeTabBuildCraft; -import buildcraft.core.ItemMapLocation; -import buildcraft.core.ItemRobot; -import buildcraft.core.TileBuffer; -import buildcraft.core.robots.DockingStation; -import buildcraft.core.robots.EntityRobot; -import buildcraft.core.utils.MatrixTranformations; -import buildcraft.core.utils.Utils; -import buildcraft.transport.gates.GateDefinition; -import buildcraft.transport.gates.GateFactory; -import buildcraft.transport.gates.ItemGate; -import buildcraft.transport.render.PipeRendererWorld; -import buildcraft.transport.utils.FacadeMatrix; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Random; public class BlockGenericPipe extends BlockBuildCraft { @@ -1108,7 +1107,7 @@ public class BlockGenericPipe extends BlockBuildCraft { return null; } - public static boolean placePipe(Pipe pipe, World world, int i, int j, int k, Block block, int meta) { + public static boolean placePipe(Pipe pipe, World world, int i, int j, int k, Block block, int meta, EntityPlayer player) { if (world.isRemote) { return true; } @@ -1121,6 +1120,7 @@ public class BlockGenericPipe extends BlockBuildCraft { TileGenericPipe tilePipe = (TileGenericPipe) tile; tilePipe.initialize(pipe); tilePipe.sendUpdateToClient(); + FMLCommonHandler.instance().bus().post(new PipePlacedEvent(player, pipe.item.getUnlocalizedName())); } } diff --git a/common/buildcraft/transport/ItemPipe.java b/common/buildcraft/transport/ItemPipe.java index 8237dbc7..68f5a927 100644 --- a/common/buildcraft/transport/ItemPipe.java +++ b/common/buildcraft/transport/ItemPipe.java @@ -8,10 +8,14 @@ */ package buildcraft.transport; -import java.util.List; - -import org.apache.logging.log4j.Level; - +import buildcraft.BuildCraftTransport; +import buildcraft.api.core.BCLog; +import buildcraft.api.core.IIconProvider; +import buildcraft.core.CreativeTabBuildCraft; +import buildcraft.core.IItemPipe; +import buildcraft.core.ItemBuildCraft; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -19,16 +23,9 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import org.apache.logging.log4j.Level; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import buildcraft.BuildCraftTransport; -import buildcraft.api.core.BCLog; -import buildcraft.api.core.IIconProvider; -import buildcraft.core.CreativeTabBuildCraft; -import buildcraft.core.IItemPipe; -import buildcraft.core.ItemBuildCraft; +import java.util.List; public class ItemPipe extends ItemBuildCraft implements IItemPipe { @@ -88,7 +85,7 @@ public class ItemPipe extends ItemBuildCraft implements IItemPipe { return true; } - if (BlockGenericPipe.placePipe(pipe, world, i, j, k, block, 0)) { + if (BlockGenericPipe.placePipe(pipe, world, i, j, k, block, 0, entityplayer)) { block.onBlockPlacedBy(world, i, j, k, entityplayer, itemstack); // TODO: Fix sound