From 56dd1a6bdde34982781426b7f21e0c34c63ff674 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Tue, 28 Oct 2014 06:56:49 +0100 Subject: [PATCH] refactor and add functionality to gate API, for #2107 --- .../api/gates/ActionParameterItemStack.java | 31 ++++++--- api/buildcraft/api/gates/IActionProvider.java | 4 +- api/buildcraft/api/gates/IActionReceptor.java | 2 +- .../api/gates/IOverrideDefaultTriggers.java | 20 ------ api/buildcraft/api/gates/IStatement.java | 3 +- .../api/gates/IStatementParameter.java | 39 ++++++++--- .../api/gates/ITriggerProvider.java | 4 +- .../api/gates/StatementManager.java | 10 +-- .../api/gates/TriggerParameterItemStack.java | 42 ++++++++++-- api/buildcraft/api/gates/package-info.java | 2 +- common/buildcraft/BuildCraftEnergy.java | 4 ++ common/buildcraft/builders/TileFiller.java | 3 +- .../statements/BuildersActionProvider.java | 3 +- .../StatementParameterStackFilter.java | 2 +- .../robots/AIRobotSearchStackRequest.java | 4 +- .../boards/BoardRobotGenericBreakBlock.java | 2 +- .../core/robots/boards/BoardRobotPump.java | 2 +- .../statements/DefaultActionProvider.java | 5 +- .../statements/DefaultTriggerProvider.java | 11 +-- .../StatementParameterDirection.java | 43 ++++++++++-- ...tatementParameterRedstoneGateSideOnly.java | 25 ++++++- .../statements/TriggerFluidContainer.java | 4 +- .../TriggerFluidContainerLevel.java | 4 +- .../core/statements/TriggerInventory.java | 2 +- .../statements/TriggerInventoryLevel.java | 2 +- common/buildcraft/energy/TileEngine.java | 15 +--- common/buildcraft/energy/TileEngineIron.java | 14 ---- common/buildcraft/energy/TileEngineStone.java | 11 --- .../statements/EnergyStatementProvider.java | 38 +++++++++++ common/buildcraft/silicon/TileLaser.java | 3 +- .../silicon/TileLaserTableBase.java | 3 +- .../silicon/statements/ActionRobotFilter.java | 2 +- .../statements/ActionRobotGotoStation.java | 2 +- .../statements/ActionRobotWorkInArea.java | 2 +- .../statements/ActionStationForbidRobot.java | 2 +- .../statements/RobotsActionProvider.java | 2 +- .../statements/RobotsTriggerProvider.java | 2 +- common/buildcraft/transport/Gate.java | 6 +- .../transport/PipeActionProvider.java | 3 +- .../transport/PipeTriggerProvider.java | 2 +- .../transport/TileFilteredBuffer.java | 14 +--- .../transport/gui/GuiGateInterface.java | 6 +- .../statements/ActionParameterSignal.java | 62 +++++++++-------- .../statements/TriggerParameterSignal.java | 68 +++++++++---------- .../statements/TriggerPipeContents.java | 8 +-- 45 files changed, 313 insertions(+), 225 deletions(-) delete mode 100644 api/buildcraft/api/gates/IOverrideDefaultTriggers.java create mode 100644 common/buildcraft/energy/statements/EnergyStatementProvider.java diff --git a/api/buildcraft/api/gates/ActionParameterItemStack.java b/api/buildcraft/api/gates/ActionParameterItemStack.java index d87cc374..ea5611bf 100755 --- a/api/buildcraft/api/gates/ActionParameterItemStack.java +++ b/api/buildcraft/api/gates/ActionParameterItemStack.java @@ -8,6 +8,7 @@ */ package buildcraft.api.gates; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; @@ -15,22 +16,21 @@ import buildcraft.api.core.NetworkData; import buildcraft.api.transport.IPipeTile; public class ActionParameterItemStack implements IActionParameter { - @NetworkData protected ItemStack stack; @Override - public ItemStack getItemStackToDraw() { - return stack; - } - - @Override - public IIcon getIconToDraw() { + public IIcon getIcon() { return null; } @Override - public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) { + public ItemStack getItemStack() { + return stack; + } + + @Override + public void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton) { if (stack != null) { this.stack = stack.copy(); this.stack.stackSize = 1; @@ -71,4 +71,19 @@ public class ActionParameterItemStack implements IActionParameter { return ""; } } + + @Override + public String getUniqueTag() { + return "buildcraft:stackAction"; + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + + } + + @Override + public IStatementParameter rotateLeft() { + return this; + } } diff --git a/api/buildcraft/api/gates/IActionProvider.java b/api/buildcraft/api/gates/IActionProvider.java index a94b0c23..c1c2d717 100644 --- a/api/buildcraft/api/gates/IActionProvider.java +++ b/api/buildcraft/api/gates/IActionProvider.java @@ -12,7 +12,7 @@ import java.util.Collection; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; - +import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.transport.IPipeTile; public interface IActionProvider { @@ -26,5 +26,5 @@ public interface IActionProvider { /** * Returns the list of actions available to a gate next to the given block. */ - Collection getNeighborActions(Block block, TileEntity tile); + Collection getNeighborActions(ForgeDirection side, Block block, TileEntity tile); } diff --git a/api/buildcraft/api/gates/IActionReceptor.java b/api/buildcraft/api/gates/IActionReceptor.java index 072b17ac..70254822 100644 --- a/api/buildcraft/api/gates/IActionReceptor.java +++ b/api/buildcraft/api/gates/IActionReceptor.java @@ -9,5 +9,5 @@ package buildcraft.api.gates; public interface IActionReceptor { - void actionActivated(IAction action); + void actionActivated(IAction action, IActionParameter[] parameters); } diff --git a/api/buildcraft/api/gates/IOverrideDefaultTriggers.java b/api/buildcraft/api/gates/IOverrideDefaultTriggers.java deleted file mode 100644 index a105f52d..00000000 --- a/api/buildcraft/api/gates/IOverrideDefaultTriggers.java +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team - * http://www.mod-buildcraft.com - * - * BuildCraft is distributed under the terms of the Minecraft Mod Public - * License 1.0, or MMPL. Please check the contents of the license located in - * http://www.mod-buildcraft.com/MMPL-1.0.txt - */ -package buildcraft.api.gates; - -import java.util.LinkedList; - -/** - * This interface has to be implemented by a TileEntity or a Pipe that wants to provide triggers different from the ones installed by default with BuildCraft. - */ -public interface IOverrideDefaultTriggers { - - LinkedList getTriggers(); - -} diff --git a/api/buildcraft/api/gates/IStatement.java b/api/buildcraft/api/gates/IStatement.java index 14bcdde2..b632aff6 100644 --- a/api/buildcraft/api/gates/IStatement.java +++ b/api/buildcraft/api/gates/IStatement.java @@ -46,8 +46,7 @@ public interface IStatement { String getDescription(); /** - * Create parameters for the trigger. As for now, there is only one kind of - * trigger parameter available so this subprogram is final. + * Create parameters for the trigger. */ IStatementParameter createParameter(int index); diff --git a/api/buildcraft/api/gates/IStatementParameter.java b/api/buildcraft/api/gates/IStatementParameter.java index bafce2f5..a412b305 100755 --- a/api/buildcraft/api/gates/IStatementParameter.java +++ b/api/buildcraft/api/gates/IStatementParameter.java @@ -8,24 +8,47 @@ */ package buildcraft.api.gates; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; - import buildcraft.api.transport.IPipeTile; public interface IStatementParameter { - - ItemStack getItemStackToDraw(); - - IIcon getIconToDraw(); + /** + * Every parameter needs a unique tag, it should be in the format of + * ":". + * + * @return the unique id + */ + String getUniqueTag(); + + @SideOnly(Side.CLIENT) + IIcon getIcon(); + + @SideOnly(Side.CLIENT) + ItemStack getItemStack(); + + @SideOnly(Side.CLIENT) + void registerIcons(IIconRegister iconRegister); + + /** + * Return the parameter description in the UI + */ String getDescription(); - void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton); - - void writeToNBT(NBTTagCompound compound); + void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton); void readFromNBT(NBTTagCompound compound); + void writeToNBT(NBTTagCompound compound); + + /** + * This returns the parameter after a left rotation. Used in particular in + * blueprints orientation. + */ + IStatementParameter rotateLeft(); } diff --git a/api/buildcraft/api/gates/ITriggerProvider.java b/api/buildcraft/api/gates/ITriggerProvider.java index 3c125cce..4e30d1a0 100644 --- a/api/buildcraft/api/gates/ITriggerProvider.java +++ b/api/buildcraft/api/gates/ITriggerProvider.java @@ -12,7 +12,7 @@ import java.util.Collection; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; - +import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.transport.IPipeTile; public interface ITriggerProvider { @@ -25,6 +25,6 @@ public interface ITriggerProvider { /** * Returns the list of triggers available to a gate next to the given block. */ - Collection getNeighborTriggers(Block block, TileEntity tile); + Collection getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile); } diff --git a/api/buildcraft/api/gates/StatementManager.java b/api/buildcraft/api/gates/StatementManager.java index 9fb047bc..eafb3d96 100644 --- a/api/buildcraft/api/gates/StatementManager.java +++ b/api/buildcraft/api/gates/StatementManager.java @@ -16,7 +16,7 @@ import java.util.Map; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; - +import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.transport.IPipeTile; public final class StatementManager { @@ -54,11 +54,11 @@ public final class StatementManager { parameterToId.put(param, name); } - public static List getNeighborTriggers(Block block, TileEntity entity) { + public static List getNeighborTriggers(ForgeDirection side, Block block, TileEntity entity) { List result = new LinkedList(); for (ITriggerProvider provider : triggerProviders) { - Collection toAdd = provider.getNeighborTriggers(block, entity); + Collection toAdd = provider.getNeighborTriggers(side, block, entity); if (toAdd != null) { for (ITrigger t : toAdd) { @@ -72,11 +72,11 @@ public final class StatementManager { return result; } - public static List getNeighborActions(Block block, TileEntity entity) { + public static List getNeighborActions(ForgeDirection side, Block block, TileEntity entity) { List result = new LinkedList(); for (IActionProvider provider : actionProviders) { - Collection toAdd = provider.getNeighborActions(block, entity); + Collection toAdd = provider.getNeighborActions(side, block, entity); if (toAdd != null) { for (IAction t : toAdd) { diff --git a/api/buildcraft/api/gates/TriggerParameterItemStack.java b/api/buildcraft/api/gates/TriggerParameterItemStack.java index e1b907e5..7df18e1c 100644 --- a/api/buildcraft/api/gates/TriggerParameterItemStack.java +++ b/api/buildcraft/api/gates/TriggerParameterItemStack.java @@ -8,6 +8,7 @@ */ package buildcraft.api.gates; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -21,17 +22,17 @@ public class TriggerParameterItemStack implements ITriggerParameter { protected ItemStack stack; @Override - public ItemStack getItemStackToDraw() { - return stack; - } - - @Override - public IIcon getIconToDraw() { + public IIcon getIcon() { return null; } @Override - public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) { + public ItemStack getItemStack() { + return stack; + } + + @Override + public void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton) { if (stack != null) { this.stack = stack.copy(); this.stack.stackSize = 1; @@ -59,6 +60,18 @@ public class TriggerParameterItemStack implements ITriggerParameter { stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("stack")); } + @Override + public boolean equals(Object object) { + if (object instanceof TriggerParameterItemStack) { + TriggerParameterItemStack param = (TriggerParameterItemStack) object; + + return ItemStack.areItemStacksEqual(stack, param.stack) + && ItemStack.areItemStackTagsEqual(stack, param.stack); + } else { + return false; + } + } + @Override public String getDescription() { if (stack != null) { @@ -67,4 +80,19 @@ public class TriggerParameterItemStack implements ITriggerParameter { return ""; } } + + @Override + public String getUniqueTag() { + return "buildcraft:stackTrigger"; + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + + } + + @Override + public IStatementParameter rotateLeft() { + return this; + } } diff --git a/api/buildcraft/api/gates/package-info.java b/api/buildcraft/api/gates/package-info.java index 0a4e4df3..dbe7a5cd 100644 --- a/api/buildcraft/api/gates/package-info.java +++ b/api/buildcraft/api/gates/package-info.java @@ -6,7 +6,7 @@ * License 1.0, or MMPL. Please check the contents of the license located in * http://www.mod-buildcraft.com/MMPL-1.0.txt */ -@API(apiVersion = "2.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|gates") +@API(apiVersion = "2.2", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|gates") package buildcraft.api.gates; import cpw.mods.fml.common.API; diff --git a/common/buildcraft/BuildCraftEnergy.java b/common/buildcraft/BuildCraftEnergy.java index e573d839..ed81c165 100644 --- a/common/buildcraft/BuildCraftEnergy.java +++ b/common/buildcraft/BuildCraftEnergy.java @@ -47,6 +47,7 @@ import buildcraft.api.core.JavaTools; import buildcraft.api.core.StackKey; import buildcraft.api.fuels.BuildcraftFuelRegistry; import buildcraft.api.gates.ITrigger; +import buildcraft.api.gates.StatementManager; import buildcraft.api.recipes.BuildcraftRecipeRegistry; import buildcraft.core.BlockSpring; import buildcraft.core.DefaultProps; @@ -68,6 +69,7 @@ import buildcraft.energy.TileEnergyEmitter; import buildcraft.energy.TileEnergyReceiver; import buildcraft.energy.TileEngine; import buildcraft.energy.TileEngine.EnergyStage; +import buildcraft.energy.statements.EnergyStatementProvider; import buildcraft.energy.statements.TriggerEngineHeat; import buildcraft.energy.worldgen.BiomeGenOilDesert; import buildcraft.energy.worldgen.BiomeGenOilOcean; @@ -323,6 +325,8 @@ public class BuildCraftEnergy extends BuildCraftMod { NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); + StatementManager.registerTriggerProvider(new EnergyStatementProvider()); + BuilderAPI.schematicRegistry.registerSchematicBlock(engineBlock, SchematicEngine.class); if (BuildCraftCore.loadDefaultRecipes) { diff --git a/common/buildcraft/builders/TileFiller.java b/common/buildcraft/builders/TileFiller.java index e1d9c931..57cafb12 100644 --- a/common/buildcraft/builders/TileFiller.java +++ b/common/buildcraft/builders/TileFiller.java @@ -19,6 +19,7 @@ import buildcraft.BuildCraftCore; import buildcraft.api.core.IAreaProvider; import buildcraft.api.filler.FillerManager; import buildcraft.api.gates.IAction; +import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IActionReceptor; import buildcraft.builders.statements.ActionFiller; import buildcraft.core.Box; @@ -313,7 +314,7 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction } @Override - public void actionActivated(IAction action) { + public void actionActivated(IAction action, IActionParameter[] parameters) { if (action == BuildCraftCore.actionOn) { lastMode = ActionMachineControl.Mode.On; } else if (action == BuildCraftCore.actionOff) { diff --git a/common/buildcraft/builders/statements/BuildersActionProvider.java b/common/buildcraft/builders/statements/BuildersActionProvider.java index f1895338..ba817d44 100644 --- a/common/buildcraft/builders/statements/BuildersActionProvider.java +++ b/common/buildcraft/builders/statements/BuildersActionProvider.java @@ -14,6 +14,7 @@ import java.util.LinkedList; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.filler.FillerManager; import buildcraft.api.filler.IFillerPattern; import buildcraft.api.gates.IAction; @@ -31,7 +32,7 @@ public class BuildersActionProvider implements IActionProvider { } @Override - public Collection getNeighborActions(Block block, TileEntity tile) { + public Collection getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { LinkedList actions = new LinkedList(); if (tile instanceof TileFiller) { for (IFillerPattern p : FillerManager.registry.getPatterns()) { diff --git a/common/buildcraft/core/inventory/filters/StatementParameterStackFilter.java b/common/buildcraft/core/inventory/filters/StatementParameterStackFilter.java index d68f8226..44c0527d 100755 --- a/common/buildcraft/core/inventory/filters/StatementParameterStackFilter.java +++ b/common/buildcraft/core/inventory/filters/StatementParameterStackFilter.java @@ -27,7 +27,7 @@ public class StatementParameterStackFilter extends ArrayStackOrListFilter { for (IStatementParameter s : parameters) { if (s != null) { if (s instanceof ActionParameterItemStack || s instanceof TriggerParameterItemStack) { - tmp.add(s.getItemStackToDraw()); + tmp.add(s.getItemStack()); } } } diff --git a/common/buildcraft/core/robots/AIRobotSearchStackRequest.java b/common/buildcraft/core/robots/AIRobotSearchStackRequest.java index 0ada6363..827a8b22 100755 --- a/common/buildcraft/core/robots/AIRobotSearchStackRequest.java +++ b/common/buildcraft/core/robots/AIRobotSearchStackRequest.java @@ -132,10 +132,10 @@ public class AIRobotSearchStackRequest extends AIRobot { for (IStatementParameter p : s.parameters) { ActionParameterItemStack param = (ActionParameterItemStack) p; - if (param != null && !isBlacklisted(param.getItemStackToDraw())) { + if (param != null && !isBlacklisted(param.getItemStack())) { StackRequest req = new StackRequest(); req.station = station; - req.stack = param.getItemStackToDraw(); + req.stack = param.getItemStack(); return req; } diff --git a/common/buildcraft/core/robots/boards/BoardRobotGenericBreakBlock.java b/common/buildcraft/core/robots/boards/BoardRobotGenericBreakBlock.java index c4de70d8..d149aa87 100755 --- a/common/buildcraft/core/robots/boards/BoardRobotGenericBreakBlock.java +++ b/common/buildcraft/core/robots/boards/BoardRobotGenericBreakBlock.java @@ -132,7 +132,7 @@ public abstract class BoardRobotGenericBreakBlock extends RedstoneBoardRobot { for (IActionParameter p : slot.parameters) { if (p != null && p instanceof ActionParameterItemStack) { ActionParameterItemStack param = (ActionParameterItemStack) p; - ItemStack stack = param.getItemStackToDraw(); + ItemStack stack = param.getItemStack(); if (stack != null && stack.getItem() instanceof ItemBlock) { blockFilter.add(((ItemBlock) stack.getItem()).field_150939_a); diff --git a/common/buildcraft/core/robots/boards/BoardRobotPump.java b/common/buildcraft/core/robots/boards/BoardRobotPump.java index ef30e81a..042ec668 100755 --- a/common/buildcraft/core/robots/boards/BoardRobotPump.java +++ b/common/buildcraft/core/robots/boards/BoardRobotPump.java @@ -119,7 +119,7 @@ public class BoardRobotPump extends RedstoneBoardRobot { for (IActionParameter p : slot.parameters) { if (p != null && p instanceof ActionParameterItemStack) { ActionParameterItemStack param = (ActionParameterItemStack) p; - ItemStack stack = param.getItemStackToDraw(); + ItemStack stack = param.getItemStack(); if (stack != null) { FluidStack fluid = FluidContainerRegistry.getFluidForFilledItem(stack); diff --git a/common/buildcraft/core/statements/DefaultActionProvider.java b/common/buildcraft/core/statements/DefaultActionProvider.java index 16c26e68..f6526df1 100644 --- a/common/buildcraft/core/statements/DefaultActionProvider.java +++ b/common/buildcraft/core/statements/DefaultActionProvider.java @@ -15,9 +15,8 @@ import org.apache.logging.log4j.Level; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; - +import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.FMLLog; - import buildcraft.BuildCraftCore; import buildcraft.api.gates.IAction; import buildcraft.api.gates.IActionProvider; @@ -32,7 +31,7 @@ public class DefaultActionProvider implements IActionProvider { } @Override - public Collection getNeighborActions(Block block, TileEntity tile) { + public Collection getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { LinkedList res = new LinkedList(); res.add(BuildCraftCore.actionRedstone); diff --git a/common/buildcraft/core/statements/DefaultTriggerProvider.java b/common/buildcraft/core/statements/DefaultTriggerProvider.java index 40f3140e..e3354c64 100644 --- a/common/buildcraft/core/statements/DefaultTriggerProvider.java +++ b/common/buildcraft/core/statements/DefaultTriggerProvider.java @@ -21,7 +21,6 @@ import net.minecraftforge.fluids.IFluidHandler; import cofh.api.energy.IEnergyHandler; import buildcraft.BuildCraftCore; -import buildcraft.api.gates.IOverrideDefaultTriggers; import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITriggerProvider; import buildcraft.api.transport.IPipeTile; @@ -30,11 +29,7 @@ import buildcraft.core.IMachine; public class DefaultTriggerProvider implements ITriggerProvider { @Override - public LinkedList getNeighborTriggers(Block block, TileEntity tile) { - if (tile instanceof IOverrideDefaultTriggers) { - return ((IOverrideDefaultTriggers) tile).getTriggers(); - } - + public LinkedList getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { LinkedList res = new LinkedList(); if (tile instanceof IInventory && ((IInventory) tile).getSizeInventory() > 0) { @@ -48,7 +43,7 @@ public class DefaultTriggerProvider implements ITriggerProvider { } if (tile instanceof IFluidHandler) { - FluidTankInfo[] tanks = ((IFluidHandler) tile).getTankInfo(ForgeDirection.UNKNOWN); + FluidTankInfo[] tanks = ((IFluidHandler) tile).getTankInfo(side.getOpposite()); if (tanks != null && tanks.length > 0) { res.add(BuildCraftCore.triggerEmptyFluid); res.add(BuildCraftCore.triggerContainsFluid); @@ -65,7 +60,7 @@ public class DefaultTriggerProvider implements ITriggerProvider { res.add(BuildCraftCore.triggerMachineInactive); } - if (tile instanceof IEnergyHandler && ((IEnergyHandler) tile).getMaxEnergyStored(ForgeDirection.UNKNOWN) > 0) { + if (tile instanceof IEnergyHandler && ((IEnergyHandler) tile).getMaxEnergyStored(side.getOpposite()) > 0) { res.add(BuildCraftCore.triggerEnergyHigh); res.add(BuildCraftCore.triggerEnergyLow); } diff --git a/common/buildcraft/core/statements/StatementParameterDirection.java b/common/buildcraft/core/statements/StatementParameterDirection.java index e2b49334..9243a69c 100644 --- a/common/buildcraft/core/statements/StatementParameterDirection.java +++ b/common/buildcraft/core/statements/StatementParameterDirection.java @@ -8,6 +8,7 @@ */ package buildcraft.core.statements; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; @@ -15,7 +16,9 @@ import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.core.NetworkData; import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatement; +import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.ITriggerParameter; +import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipeTile; import buildcraft.core.utils.StringUtils; @@ -24,29 +27,33 @@ public class StatementParameterDirection implements IActionParameter, ITriggerPa @NetworkData public ForgeDirection direction = ForgeDirection.UNKNOWN; + private IIcon[] icons; + public StatementParameterDirection() { } @Override - public ItemStack getItemStackToDraw() { + public ItemStack getItemStack() { return null; } @Override - public IIcon getIconToDraw() { + public IIcon getIcon() { if (direction == ForgeDirection.UNKNOWN) { return null; } else { - return StatementIconProvider.INSTANCE.getIcon(StatementIconProvider.Action_Parameter_Direction_Down + direction.ordinal()); + return icons[direction.ordinal()]; } } @Override - public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) { - do { - direction = ForgeDirection.getOrientation((direction.ordinal() + (mouseButton > 0 ? -1 : 1)) % 6); - } while (!pipe.isPipeConnected(direction)); + public void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton) { + if (source instanceof IPipe) { + do { + direction = ForgeDirection.getOrientation((direction.ordinal() + (mouseButton > 0 ? -1 : 1)) % 6); + } while (!((IPipe) source).getTile().isPipeConnected(direction)); + } } @Override @@ -80,4 +87,26 @@ public class StatementParameterDirection implements IActionParameter, ITriggerPa return StringUtils.localize("direction." + direction.name().toLowerCase()); } } + + @Override + public String getUniqueTag() { + return "buildcraft:pipeActionDirection"; + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + icons = new IIcon[] { + iconRegister.registerIcon("buildcraft:triggers/trigger_dir_down"), + iconRegister.registerIcon("buildcraft:triggers/trigger_dir_up"), + iconRegister.registerIcon("buildcraft:triggers/trigger_dir_north"), + iconRegister.registerIcon("buildcraft:triggers/trigger_dir_south"), + iconRegister.registerIcon("buildcraft:triggers/trigger_dir_west"), + iconRegister.registerIcon("buildcraft:triggers/trigger_dir_east") + }; + } + + @Override + public IStatementParameter rotateLeft() { + return this; + } } diff --git a/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java b/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java index b8525b1c..ddb5895b 100644 --- a/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java +++ b/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java @@ -1,11 +1,13 @@ package buildcraft.core.statements; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import buildcraft.api.core.NetworkData; import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatement; +import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.transport.IPipeTile; import buildcraft.core.utils.StringUtils; @@ -15,17 +17,19 @@ public class StatementParameterRedstoneGateSideOnly implements @NetworkData public boolean isOn = false; + private IIcon icon; + public StatementParameterRedstoneGateSideOnly() { } @Override - public ItemStack getItemStackToDraw() { + public ItemStack getItemStack() { return null; } @Override - public IIcon getIconToDraw() { + public IIcon getIcon() { if (!isOn) { return null; } else { @@ -34,7 +38,7 @@ public class StatementParameterRedstoneGateSideOnly implements } @Override - public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) { + public void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton) { isOn = !isOn; } @@ -54,4 +58,19 @@ public class StatementParameterRedstoneGateSideOnly implements public String getDescription() { return isOn ? StringUtils.localize("gate.parameter.redstone.gateSideOnly") : ""; } + + @Override + public String getUniqueTag() { + return "buildcraft:redstoneGateSideOnly"; + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + icon = iconRegister.registerIcon("buildcraft:triggers/redstone_gate_side_only"); + } + + @Override + public IStatementParameter rotateLeft() { + return this; + } } diff --git a/common/buildcraft/core/statements/TriggerFluidContainer.java b/common/buildcraft/core/statements/TriggerFluidContainer.java index c89f343b..26091bf8 100644 --- a/common/buildcraft/core/statements/TriggerFluidContainer.java +++ b/common/buildcraft/core/statements/TriggerFluidContainer.java @@ -51,8 +51,8 @@ public class TriggerFluidContainer extends BCTrigger { FluidStack searchedFluid = null; - if (parameter != null && parameter.getItemStackToDraw() != null) { - searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameter.getItemStackToDraw()); + if (parameter != null && parameter.getItemStack() != null) { + searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameter.getItemStack()); } if (searchedFluid != null) { diff --git a/common/buildcraft/core/statements/TriggerFluidContainerLevel.java b/common/buildcraft/core/statements/TriggerFluidContainerLevel.java index fbfd5ee0..d3e62fdb 100644 --- a/common/buildcraft/core/statements/TriggerFluidContainerLevel.java +++ b/common/buildcraft/core/statements/TriggerFluidContainerLevel.java @@ -58,8 +58,8 @@ public class TriggerFluidContainerLevel extends BCTrigger { FluidStack searchedFluid = null; - if (parameter != null && parameter.getItemStackToDraw() != null) { - searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameter.getItemStackToDraw()); + if (parameter != null && parameter.getItemStack() != null) { + searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameter.getItemStack()); } if (searchedFluid != null) { diff --git a/common/buildcraft/core/statements/TriggerInventory.java b/common/buildcraft/core/statements/TriggerInventory.java index 0d3c05a8..52d47d12 100644 --- a/common/buildcraft/core/statements/TriggerInventory.java +++ b/common/buildcraft/core/statements/TriggerInventory.java @@ -52,7 +52,7 @@ public class TriggerInventory extends BCTrigger { ItemStack searchedStack = null; if (parameter != null) { - searchedStack = parameter.getItemStackToDraw(); + searchedStack = parameter.getItemStack(); } if (tile instanceof IInventory) { diff --git a/common/buildcraft/core/statements/TriggerInventoryLevel.java b/common/buildcraft/core/statements/TriggerInventoryLevel.java index c867d415..3977d6bb 100644 --- a/common/buildcraft/core/statements/TriggerInventoryLevel.java +++ b/common/buildcraft/core/statements/TriggerInventoryLevel.java @@ -65,7 +65,7 @@ public class TriggerInventoryLevel extends BCTrigger { } if (tile instanceof IInventory) { - ItemStack searchStack = parameter.getItemStackToDraw(); + ItemStack searchStack = parameter.getItemStack(); if (searchStack == null) { return false; diff --git a/common/buildcraft/energy/TileEngine.java b/common/buildcraft/energy/TileEngine.java index f3ca0eca..346b1bf5 100644 --- a/common/buildcraft/energy/TileEngine.java +++ b/common/buildcraft/energy/TileEngine.java @@ -22,7 +22,6 @@ import cofh.api.energy.IEnergyHandler; import buildcraft.BuildCraftEnergy; import buildcraft.api.core.NetworkData; -import buildcraft.api.gates.IOverrideDefaultTriggers; import buildcraft.api.gates.ITrigger; import buildcraft.api.power.IPowerEmitter; import buildcraft.api.power.IPowerReceptor; @@ -38,7 +37,7 @@ import buildcraft.core.TileBuildCraft; import buildcraft.energy.gui.ContainerEngine; public abstract class TileEngine extends TileBuildCraft implements IPowerReceptor, IPowerEmitter, - IOverrideDefaultTriggers, IPipeConnection, IEnergyHandler { + IPipeConnection, IEnergyHandler { // Index corresponds to metadata public static final ResourceLocation[] BASE_TEXTURES = new ResourceLocation[]{ new ResourceLocation(DefaultProps.TEXTURE_PATH_BLOCKS + "/base_wood.png"), @@ -544,18 +543,6 @@ public abstract class TileEngine extends TileBuildCraft implements IPowerRecepto public abstract int calculateCurrentOutput(); - @Override - public LinkedList getTriggers() { - LinkedList triggers = new LinkedList(); - - triggers.add(BuildCraftEnergy.triggerBlueEngineHeat); - triggers.add(BuildCraftEnergy.triggerGreenEngineHeat); - triggers.add(BuildCraftEnergy.triggerYellowEngineHeat); - triggers.add(BuildCraftEnergy.triggerRedEngineHeat); - - return triggers; - } - @Override public ConnectOverride overridePipeConnection(PipeType type, ForgeDirection with) { if (type == PipeType.POWER) { diff --git a/common/buildcraft/energy/TileEngineIron.java b/common/buildcraft/energy/TileEngineIron.java index 58e9f6f6..5b405f5c 100644 --- a/common/buildcraft/energy/TileEngineIron.java +++ b/common/buildcraft/energy/TileEngineIron.java @@ -427,20 +427,6 @@ public class TileEngineIron extends TileEngineWithInventory implements IFluidHan } } - @Override - public LinkedList getTriggers() { - LinkedList triggers = super.getTriggers(); - triggers.add(BuildCraftCore.triggerEmptyFluid); - triggers.add(BuildCraftCore.triggerContainsFluid); - triggers.add(BuildCraftCore.triggerSpaceFluid); - triggers.add(BuildCraftCore.triggerFullFluid); - triggers.add(BuildCraftCore.triggerFluidContainerBelow25); - triggers.add(BuildCraftCore.triggerFluidContainerBelow50); - triggers.add(BuildCraftCore.triggerFluidContainerBelow75); - - return triggers; - } - @Override public boolean hasCustomInventoryName() { return false; diff --git a/common/buildcraft/energy/TileEngineStone.java b/common/buildcraft/energy/TileEngineStone.java index 1cb12514..b1db56e3 100644 --- a/common/buildcraft/energy/TileEngineStone.java +++ b/common/buildcraft/energy/TileEngineStone.java @@ -161,17 +161,6 @@ public class TileEngineStone extends TileEngineWithInventory { return (int) Math.round(MathUtils.clamp(e * kp + esum * ki, MIN_OUTPUT, MAX_OUTPUT)); } - @Override - public LinkedList getTriggers() { - LinkedList triggers = super.getTriggers(); - triggers.add(BuildCraftCore.triggerEmptyInventory); - triggers.add(BuildCraftCore.triggerContainsInventory); - triggers.add(BuildCraftCore.triggerSpaceInventory); - triggers.add(BuildCraftCore.triggerFullInventory); - - return triggers; - } - @Override public boolean hasCustomInventoryName() { return false; diff --git a/common/buildcraft/energy/statements/EnergyStatementProvider.java b/common/buildcraft/energy/statements/EnergyStatementProvider.java new file mode 100644 index 00000000..db36c704 --- /dev/null +++ b/common/buildcraft/energy/statements/EnergyStatementProvider.java @@ -0,0 +1,38 @@ +package buildcraft.energy.statements; + +import java.util.Collection; +import java.util.LinkedList; + +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.BuildCraftEnergy; +import buildcraft.api.gates.IAction; +import buildcraft.api.gates.IActionProvider; +import buildcraft.api.gates.ITrigger; +import buildcraft.api.gates.ITriggerProvider; +import buildcraft.api.transport.IPipeTile; +import buildcraft.energy.TileEngine; + +public class EnergyStatementProvider implements ITriggerProvider { + + @Override + public Collection getPipeTriggers(IPipeTile pipe) { + return null; + } + + @Override + public Collection getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { + LinkedList triggers = new LinkedList(); + + if (tile instanceof TileEngine) { + triggers.add(BuildCraftEnergy.triggerBlueEngineHeat); + triggers.add(BuildCraftEnergy.triggerGreenEngineHeat); + triggers.add(BuildCraftEnergy.triggerYellowEngineHeat); + triggers.add(BuildCraftEnergy.triggerRedEngineHeat); + } + + return triggers; + } + +} diff --git a/common/buildcraft/silicon/TileLaser.java b/common/buildcraft/silicon/TileLaser.java index bcef548f..ad1854e2 100644 --- a/common/buildcraft/silicon/TileLaser.java +++ b/common/buildcraft/silicon/TileLaser.java @@ -21,6 +21,7 @@ import buildcraft.api.core.NetworkData; import buildcraft.api.core.Position; import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.gates.IAction; +import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IActionReceptor; import buildcraft.api.power.ILaserTarget; import buildcraft.api.power.ILaserTargetBlock; @@ -298,7 +299,7 @@ public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachi } @Override - public void actionActivated(IAction action) { + public void actionActivated(IAction action, IActionParameter[] parameters) { if (action == BuildCraftCore.actionOn) { lastMode = ActionMachineControl.Mode.On; } else if (action == BuildCraftCore.actionOff) { diff --git a/common/buildcraft/silicon/TileLaserTableBase.java b/common/buildcraft/silicon/TileLaserTableBase.java index 5cbf7730..434ec207 100644 --- a/common/buildcraft/silicon/TileLaserTableBase.java +++ b/common/buildcraft/silicon/TileLaserTableBase.java @@ -16,6 +16,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import buildcraft.BuildCraftCore; import buildcraft.api.gates.IAction; +import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IActionReceptor; import buildcraft.api.power.ILaserTarget; import buildcraft.core.IMachine; @@ -219,7 +220,7 @@ public abstract class TileLaserTableBase extends TileBuildCraft implements ILase } @Override - public void actionActivated(IAction action) { + public void actionActivated(IAction action, IActionParameter[] parameters) { if (action == BuildCraftCore.actionOn) { lastMode = ActionMachineControl.Mode.On; } else if (action == BuildCraftCore.actionOff) { diff --git a/common/buildcraft/silicon/statements/ActionRobotFilter.java b/common/buildcraft/silicon/statements/ActionRobotFilter.java index 9434fc91..9d94a38d 100755 --- a/common/buildcraft/silicon/statements/ActionRobotFilter.java +++ b/common/buildcraft/silicon/statements/ActionRobotFilter.java @@ -71,7 +71,7 @@ public class ActionRobotFilter extends BCActionPassive { for (IActionParameter p : slot.parameters) { if (p != null && p instanceof ActionParameterItemStack) { ActionParameterItemStack param = (ActionParameterItemStack) p; - ItemStack stack = param.getItemStackToDraw(); + ItemStack stack = param.getItemStack(); if (stack != null) { result.add(stack); diff --git a/common/buildcraft/silicon/statements/ActionRobotGotoStation.java b/common/buildcraft/silicon/statements/ActionRobotGotoStation.java index 87ce5370..1caed689 100755 --- a/common/buildcraft/silicon/statements/ActionRobotGotoStation.java +++ b/common/buildcraft/silicon/statements/ActionRobotGotoStation.java @@ -63,7 +63,7 @@ public class ActionRobotGotoStation extends BCActionActive { if (parameters[0] != null) { ActionParameterItemStack stackParam = (ActionParameterItemStack) parameters[0]; - ItemStack item = stackParam.getItemStackToDraw(); + ItemStack item = stackParam.getItemStack(); if (item.getItem() instanceof ItemMapLocation) { BlockIndex index = ItemMapLocation.getBlockIndex(item); diff --git a/common/buildcraft/silicon/statements/ActionRobotWorkInArea.java b/common/buildcraft/silicon/statements/ActionRobotWorkInArea.java index 6ce827b9..fead4320 100755 --- a/common/buildcraft/silicon/statements/ActionRobotWorkInArea.java +++ b/common/buildcraft/silicon/statements/ActionRobotWorkInArea.java @@ -39,7 +39,7 @@ public class ActionRobotWorkInArea extends BCActionPassive { return null; } - ItemStack stack = ((ActionParameterItemStack) slot.parameters[0]).getItemStackToDraw(); + ItemStack stack = ((ActionParameterItemStack) slot.parameters[0]).getItemStack(); if (!(stack.getItem() instanceof ItemMapLocation)) { return null; diff --git a/common/buildcraft/silicon/statements/ActionStationForbidRobot.java b/common/buildcraft/silicon/statements/ActionStationForbidRobot.java index 8181424f..024b32f6 100755 --- a/common/buildcraft/silicon/statements/ActionStationForbidRobot.java +++ b/common/buildcraft/silicon/statements/ActionStationForbidRobot.java @@ -67,7 +67,7 @@ public class ActionStationForbidRobot extends BCActionPassive { for (IActionParameter p : slot.parameters) { if (p != null) { ActionParameterItemStack actionStack = (ActionParameterItemStack) p; - ItemStack stack = p.getItemStackToDraw(); + ItemStack stack = p.getItemStack(); if (stack != null && stack.getItem() instanceof ItemRobot) { return ItemRobot.getRobotNBT(stack) == robot.getBoard().getNBTHandler(); diff --git a/common/buildcraft/silicon/statements/RobotsActionProvider.java b/common/buildcraft/silicon/statements/RobotsActionProvider.java index 5c708933..a45a2b74 100755 --- a/common/buildcraft/silicon/statements/RobotsActionProvider.java +++ b/common/buildcraft/silicon/statements/RobotsActionProvider.java @@ -89,7 +89,7 @@ public class RobotsActionProvider implements IActionProvider { } @Override - public Collection getNeighborActions(Block block, TileEntity tile) { + public Collection getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { return null; } diff --git a/common/buildcraft/silicon/statements/RobotsTriggerProvider.java b/common/buildcraft/silicon/statements/RobotsTriggerProvider.java index 61cc6513..0bd3bfd2 100755 --- a/common/buildcraft/silicon/statements/RobotsTriggerProvider.java +++ b/common/buildcraft/silicon/statements/RobotsTriggerProvider.java @@ -47,7 +47,7 @@ public class RobotsTriggerProvider implements ITriggerProvider { } @Override - public Collection getNeighborTriggers(Block block, TileEntity tile) { + public Collection getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { return null; } diff --git a/common/buildcraft/transport/Gate.java b/common/buildcraft/transport/Gate.java index 188dec4f..7462691c 100644 --- a/common/buildcraft/transport/Gate.java +++ b/common/buildcraft/transport/Gate.java @@ -472,7 +472,7 @@ public final class Gate implements IGate { TileEntity tile = pipe.container.getTile(side); if (tile instanceof IActionReceptor) { IActionReceptor recept = (IActionReceptor) tile; - recept.actionActivated(action); + recept.actionActivated(action, slot.parameters); } } } @@ -545,7 +545,7 @@ public final class Gate implements IGate { for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { TileEntity tile = pipe.container.getTile(o); Block block = pipe.container.getBlock(o); - allTriggers.addAll(StatementManager.getNeighborTriggers(block, tile)); + allTriggers.addAll(StatementManager.getNeighborTriggers(o, block, tile)); } return allTriggers; @@ -571,7 +571,7 @@ public final class Gate implements IGate { for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { TileEntity tile = pipe.container.getTile(o); Block block = pipe.container.getBlock(o); - allActions.addAll(StatementManager.getNeighborActions(block, tile)); + allActions.addAll(StatementManager.getNeighborActions(o, block, tile)); } return allActions; diff --git a/common/buildcraft/transport/PipeActionProvider.java b/common/buildcraft/transport/PipeActionProvider.java index f905b05d..4668ed32 100644 --- a/common/buildcraft/transport/PipeActionProvider.java +++ b/common/buildcraft/transport/PipeActionProvider.java @@ -5,6 +5,7 @@ import java.util.LinkedList; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.gates.IAction; import buildcraft.api.gates.IActionProvider; import buildcraft.api.transport.IPipeTile; @@ -35,7 +36,7 @@ public class PipeActionProvider implements IActionProvider { } @Override - public Collection getNeighborActions(Block block, TileEntity tile) { + public Collection getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { return null; } diff --git a/common/buildcraft/transport/PipeTriggerProvider.java b/common/buildcraft/transport/PipeTriggerProvider.java index 37c0bbeb..98ef95a8 100644 --- a/common/buildcraft/transport/PipeTriggerProvider.java +++ b/common/buildcraft/transport/PipeTriggerProvider.java @@ -74,7 +74,7 @@ public class PipeTriggerProvider implements ITriggerProvider { } @Override - public LinkedList getNeighborTriggers(Block block, TileEntity tile) { + public LinkedList getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { return null; } } diff --git a/common/buildcraft/transport/TileFilteredBuffer.java b/common/buildcraft/transport/TileFilteredBuffer.java index fd655f3f..d302db51 100644 --- a/common/buildcraft/transport/TileFilteredBuffer.java +++ b/common/buildcraft/transport/TileFilteredBuffer.java @@ -16,12 +16,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import buildcraft.BuildCraftCore; -import buildcraft.api.gates.IOverrideDefaultTriggers; import buildcraft.api.gates.ITrigger; import buildcraft.core.TileBuildCraft; import buildcraft.core.inventory.SimpleInventory; -public class TileFilteredBuffer extends TileBuildCraft implements IInventory, IOverrideDefaultTriggers { +public class TileFilteredBuffer extends TileBuildCraft implements IInventory { private final SimpleInventory inventoryFilters = new SimpleInventory(9, "FilteredBufferFilters", 1); private final SimpleInventory inventoryStorage = new SimpleInventory(9, "FilteredBufferStorage", 64); @@ -137,15 +136,4 @@ public class TileFilteredBuffer extends TileBuildCraft implements IInventory, IO public boolean hasCustomInventoryName() { return false; } - - @Override - public LinkedList getTriggers() { - LinkedList triggers = new LinkedList(); - - triggers.add(BuildCraftCore.triggerInventoryBelow25); - triggers.add(BuildCraftCore.triggerInventoryBelow50); - triggers.add(BuildCraftCore.triggerInventoryBelow75); - - return triggers; - } } diff --git a/common/buildcraft/transport/gui/GuiGateInterface.java b/common/buildcraft/transport/gui/GuiGateInterface.java index 9f6aaef8..714b0cfe 100644 --- a/common/buildcraft/transport/gui/GuiGateInterface.java +++ b/common/buildcraft/transport/gui/GuiGateInterface.java @@ -141,7 +141,7 @@ public class GuiGateInterface extends GuiAdvancedInterface { IStatementParameter parameter = getParameter(); if (parameter != null) { - return parameter.getItemStackToDraw(); + return parameter.getItemStack(); } else { return null; } @@ -152,7 +152,7 @@ public class GuiGateInterface extends GuiAdvancedInterface { IStatementParameter parameter = getParameter(); if (parameter != null) { - return parameter.getIconToDraw(); + return parameter.getIcon(); } else { return null; } @@ -474,7 +474,7 @@ public class GuiGateInterface extends GuiAdvancedInterface { } if (param != null) { - param.clicked(pipe.container, statement.getStatement(), mc.thePlayer.inventory.getItemStack(), k); + param.onClick(pipe.container, statement.getStatement(), mc.thePlayer.inventory.getItemStack(), k); paramSlot.setParameter(param, true); } } diff --git a/common/buildcraft/transport/statements/ActionParameterSignal.java b/common/buildcraft/transport/statements/ActionParameterSignal.java index f3af9dd8..813e91f4 100644 --- a/common/buildcraft/transport/statements/ActionParameterSignal.java +++ b/common/buildcraft/transport/statements/ActionParameterSignal.java @@ -10,12 +10,15 @@ package buildcraft.transport.statements; import java.util.Locale; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import buildcraft.api.core.NetworkData; import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatement; +import buildcraft.api.gates.IStatementParameter; +import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.PipeWire; import buildcraft.core.statements.StatementIconProvider; @@ -25,44 +28,23 @@ public class ActionParameterSignal implements IActionParameter { @NetworkData public PipeWire color = null; - + private IIcon[] icons; + public ActionParameterSignal() { } @Override - public ItemStack getItemStackToDraw() { - return null; - } - - @Override - public IIcon getIconToDraw() { - int id = 0; - + public IIcon getIcon() { if (color == null) { return null; + } else { + return icons[color.ordinal() & 3]; } - - switch (color) { - case RED: - id = StatementIconProvider.Trigger_PipeSignal_Red_Active; - break; - case BLUE: - id = StatementIconProvider.Trigger_PipeSignal_Blue_Active; - break; - case GREEN: - id = StatementIconProvider.Trigger_PipeSignal_Green_Active; - break; - case YELLOW: - id = StatementIconProvider.Trigger_PipeSignal_Yellow_Active; - break; - } - - return StatementIconProvider.INSTANCE.getIcon(id); } @Override - public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) { + public void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton) { if (color == null) { color = mouseButton == 0 ? PipeWire.RED : PipeWire.YELLOW; } else if (color == (mouseButton == 0 ? PipeWire.YELLOW : PipeWire.RED)) { @@ -101,4 +83,30 @@ public class ActionParameterSignal implements IActionParameter { public String getDescription() { return String.format(StringUtils.localize("gate.action.pipe.wire"), StringUtils.localize("color." + color.name().toLowerCase(Locale.ENGLISH))); } + + @Override + public String getUniqueTag() { + return "buildcraft:pipeWireAction"; + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + icons = new IIcon[] { + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_red_active"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_blue_active"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_green_active"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_yellow_active") + }; + + } + + @Override + public IStatementParameter rotateLeft() { + return this; + } + + @Override + public ItemStack getItemStack() { + return null; + } } diff --git a/common/buildcraft/transport/statements/TriggerParameterSignal.java b/common/buildcraft/transport/statements/TriggerParameterSignal.java index c3e310dd..74d64849 100644 --- a/common/buildcraft/transport/statements/TriggerParameterSignal.java +++ b/common/buildcraft/transport/statements/TriggerParameterSignal.java @@ -10,11 +10,13 @@ package buildcraft.transport.statements; import java.util.Locale; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import buildcraft.api.core.NetworkData; import buildcraft.api.gates.IStatement; +import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.PipeWire; @@ -29,60 +31,30 @@ public class TriggerParameterSignal implements ITriggerParameter { @NetworkData public PipeWire color = null; + private IIcon[] icons; + public TriggerParameterSignal() { } @Override - public ItemStack getItemStackToDraw() { + public ItemStack getItemStack() { return null; } @Override - public IIcon getIconToDraw() { + public IIcon getIcon() { int id = 0; if (color == null) { return null; } - if (active) { - switch (color) { - case RED: - id = StatementIconProvider.Trigger_PipeSignal_Red_Active; - break; - case BLUE: - id = StatementIconProvider.Trigger_PipeSignal_Blue_Active; - break; - case GREEN: - id = StatementIconProvider.Trigger_PipeSignal_Green_Active; - break; - case YELLOW: - id = StatementIconProvider.Trigger_PipeSignal_Yellow_Active; - break; - } - } else { - switch (color) { - case RED: - id = StatementIconProvider.Trigger_PipeSignal_Red_Inactive; - break; - case BLUE: - id = StatementIconProvider.Trigger_PipeSignal_Blue_Inactive; - break; - case GREEN: - id = StatementIconProvider.Trigger_PipeSignal_Green_Inactive; - break; - case YELLOW: - id = StatementIconProvider.Trigger_PipeSignal_Yellow_Inactive; - break; - } - } - - return StatementIconProvider.INSTANCE.getIcon(id); + return icons[color.ordinal() + (active ? 4 : 0)]; } @Override - public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) { + public void onClick(Object source, IStatement stmt, ItemStack stack, int mouseButton) { if (mouseButton == 0) { if (color == null) { active = true; @@ -133,4 +105,28 @@ public class TriggerParameterSignal implements ITriggerParameter { public String getDescription() { return String.format(StringUtils.localize("gate.trigger.pipe.wire." + (active ? "active" : "inactive")), StringUtils.localize("color." + color.name().toLowerCase(Locale.ENGLISH))); } + + @Override + public String getUniqueTag() { + return "buildcraft:pipeWireTrigger"; + } + + @Override + public void registerIcons(IIconRegister iconRegister) { + icons = new IIcon[]{ + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_red_inactive"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_blue_inactive"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_green_inactive"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_yellow_inactive"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_red_active"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_blue_active"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_green_active"), + iconRegister.registerIcon("buildcraft:triggers/trigger_pipesignal_yellow_active") + }; + } + + @Override + public IStatementParameter rotateLeft() { + return this; + } } diff --git a/common/buildcraft/transport/statements/TriggerPipeContents.java b/common/buildcraft/transport/statements/TriggerPipeContents.java index 3a7be66f..c41ab249 100644 --- a/common/buildcraft/transport/statements/TriggerPipeContents.java +++ b/common/buildcraft/transport/statements/TriggerPipeContents.java @@ -73,9 +73,9 @@ public class TriggerPipeContents extends BCTrigger { if (kind == PipeContents.empty) { return transportItems.items.isEmpty(); } else if (kind == PipeContents.containsItems) { - if (parameter != null && parameter.getItemStackToDraw() != null) { + if (parameter != null && parameter.getItemStack() != null) { for (TravelingItem item : transportItems.items) { - if (StackHelper.isMatchingItemOrList(parameter.getItemStackToDraw(), item.getItemStack())) { + if (StackHelper.isMatchingItemOrList(parameter.getItemStack(), item.getItemStack())) { return true; } } @@ -88,8 +88,8 @@ public class TriggerPipeContents extends BCTrigger { FluidStack searchedFluid = null; - if (parameter != null && parameter.getItemStackToDraw() != null) { - searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameter.getItemStackToDraw()); + if (parameter != null && parameter.getItemStack() != null) { + searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameter.getItemStack()); } if (kind == PipeContents.empty) {