further work on improving/separating the gate API, #2107

This commit is contained in:
asiekierka 2014-10-28 12:17:52 +01:00
parent 489a3cc6f7
commit 8728885c2c
66 changed files with 236 additions and 358 deletions

View file

@ -41,7 +41,7 @@ public abstract class GateExpansionController {
return false; return false;
} }
public boolean isTriggerActive(ITrigger trigger, ITriggerParameter parameter) { public boolean isTriggerActive(ITrigger trigger, IStatementParameter[] parameters) {
return false; return false;
} }

View file

@ -11,6 +11,6 @@ package buildcraft.api.gates;
public interface IAction extends IStatement { public interface IAction extends IStatement {
void actionActivate(IGate gate, IActionParameter[] parameters); void actionActivate(IGate gate, IStatementParameter[] parameters);
} }

View file

@ -1,13 +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;
public interface IActionParameter extends IStatementParameter {
}

View file

@ -18,13 +18,13 @@ import buildcraft.api.transport.IPipeTile;
public interface IActionProvider { public interface IActionProvider {
/** /**
* Returns the list of actions that are available from the pipe holding the * Returns the list of actions that are available from the tile holding the
* gate. * gate.
*/ */
Collection<IAction> getPipeActions(IPipeTile pipe); Collection<IAction> getInternalActions(TileEntity tile);
/** /**
* Returns the list of actions available to a gate next to the given block. * Returns the list of actions available to a gate next to the given block.
*/ */
Collection<IAction> getNeighborActions(ForgeDirection side, Block block, TileEntity tile); Collection<IAction> getExternalActions(ForgeDirection side, TileEntity tile);
} }

View file

@ -9,5 +9,5 @@
package buildcraft.api.gates; package buildcraft.api.gates;
public interface IActionReceptor { public interface IActionReceptor {
void actionActivated(IAction action, IActionParameter[] parameters); void actionActivated(IAction action, IStatementParameter[] parameters);
} }

View file

@ -11,6 +11,6 @@ package buildcraft.api.gates;
public interface ITrigger extends IStatement { public interface ITrigger extends IStatement {
boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters); boolean isTriggerActive(IGate gate, IStatementParameter[] parameters);
} }

View file

@ -1,13 +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;
public interface ITriggerParameter extends IStatementParameter {
}

View file

@ -18,13 +18,13 @@ import buildcraft.api.transport.IPipeTile;
public interface ITriggerProvider { public interface ITriggerProvider {
/** /**
* Returns the list of triggers that are available from the pipe holding the gate. * Returns the list of triggers that are available from the object holding the gate.
*/ */
Collection<ITrigger> getPipeTriggers(IPipeTile pipe); Collection<ITrigger> getInternalTriggers(TileEntity tile);
/** /**
* Returns the list of triggers available to a gate next to the given block. * Returns the list of triggers available to a gate next to the given block.
*/ */
Collection<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile); Collection<ITrigger> getExternalTriggers(ForgeDirection side, TileEntity tile);
} }

View file

@ -52,11 +52,11 @@ public final class StatementManager {
parameters.put(createParameter(param).getUniqueTag(), param); parameters.put(createParameter(param).getUniqueTag(), param);
} }
public static List<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity entity) { public static List<ITrigger> getExternalTriggers(ForgeDirection side, TileEntity entity) {
List<ITrigger> result = new LinkedList<ITrigger>(); List<ITrigger> result = new LinkedList<ITrigger>();
for (ITriggerProvider provider : triggerProviders) { for (ITriggerProvider provider : triggerProviders) {
Collection<ITrigger> toAdd = provider.getNeighborTriggers(side, block, entity); Collection<ITrigger> toAdd = provider.getExternalTriggers(side, entity);
if (toAdd != null) { if (toAdd != null) {
for (ITrigger t : toAdd) { for (ITrigger t : toAdd) {
@ -70,11 +70,11 @@ public final class StatementManager {
return result; return result;
} }
public static List<IAction> getNeighborActions(ForgeDirection side, Block block, TileEntity entity) { public static List<IAction> getExternalActions(ForgeDirection side, TileEntity entity) {
List<IAction> result = new LinkedList<IAction>(); List<IAction> result = new LinkedList<IAction>();
for (IActionProvider provider : actionProviders) { for (IActionProvider provider : actionProviders) {
Collection<IAction> toAdd = provider.getNeighborActions(side, block, entity); Collection<IAction> toAdd = provider.getExternalActions(side, entity);
if (toAdd != null) { if (toAdd != null) {
for (IAction t : toAdd) { for (IAction t : toAdd) {
@ -88,11 +88,11 @@ public final class StatementManager {
return result; return result;
} }
public static List<ITrigger> getPipeTriggers(IPipeTile pipe) { public static List<ITrigger> getInternalTriggers(TileEntity tile) {
List<ITrigger> result = new LinkedList<ITrigger>(); List<ITrigger> result = new LinkedList<ITrigger>();
for (ITriggerProvider provider : triggerProviders) { for (ITriggerProvider provider : triggerProviders) {
Collection<ITrigger> toAdd = provider.getPipeTriggers(pipe); Collection<ITrigger> toAdd = provider.getInternalTriggers(tile);
if (toAdd != null) { if (toAdd != null) {
for (ITrigger t : toAdd) { for (ITrigger t : toAdd) {
@ -106,11 +106,11 @@ public final class StatementManager {
return result; return result;
} }
public static List<IAction> getPipeActions(IPipeTile pipe) { public static List<IAction> getInternalActions(TileEntity tile) {
List<IAction> result = new LinkedList<IAction>(); List<IAction> result = new LinkedList<IAction>();
for (IActionProvider provider : actionProviders) { for (IActionProvider provider : actionProviders) {
Collection<IAction> toAdd = provider.getPipeActions(pipe); Collection<IAction> toAdd = provider.getInternalActions(tile);
if (toAdd != null) { if (toAdd != null) {
for (IAction t : toAdd) { for (IAction t : toAdd) {

View file

@ -15,7 +15,7 @@ import net.minecraft.util.IIcon;
import buildcraft.api.core.NetworkData; import buildcraft.api.core.NetworkData;
import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.IPipeTile;
public class ActionParameterItemStack implements IActionParameter { public class StatementParameterItemStack implements IStatementParameter {
@NetworkData @NetworkData
protected ItemStack stack; protected ItemStack stack;
@ -53,8 +53,8 @@ public class ActionParameterItemStack implements IActionParameter {
@Override @Override
public boolean equals(Object object) { public boolean equals(Object object) {
if (object instanceof ActionParameterItemStack) { if (object instanceof StatementParameterItemStack) {
ActionParameterItemStack param = (ActionParameterItemStack) object; StatementParameterItemStack param = (StatementParameterItemStack) object;
return ItemStack.areItemStacksEqual(stack, param.stack) return ItemStack.areItemStacksEqual(stack, param.stack)
&& ItemStack.areItemStackTagsEqual(stack, param.stack); && ItemStack.areItemStackTagsEqual(stack, param.stack);

View file

@ -1,98 +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 net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import buildcraft.api.core.NetworkData;
import buildcraft.api.transport.IPipeTile;
public class TriggerParameterItemStack implements ITriggerParameter {
@NetworkData
protected ItemStack stack;
@Override
public IIcon getIcon() {
return null;
}
@Override
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;
}
}
@Override
public void writeToNBT(NBTTagCompound compound) {
if (stack != null) {
NBTTagCompound tagCompound = new NBTTagCompound();
stack.writeToNBT(tagCompound);
compound.setTag("stack", tagCompound);
}
}
@Override
public void readFromNBT(NBTTagCompound compound) {
// Legacy code to prevent existing gates from losing their contents
int itemID = compound.getInteger("itemID");
if (itemID != 0) {
stack = new ItemStack((Item) Item.itemRegistry.getObject(itemID), 1, compound.getInteger("itemDMG"));
return;
}
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) {
return stack.getDisplayName();
} else {
return "";
}
}
@Override
public String getUniqueTag() {
return "buildcraft:stackTrigger";
}
@Override
public void registerIcons(IIconRegister iconRegister) {
}
@Override
public IStatementParameter rotateLeft() {
return this;
}
}

View file

@ -63,11 +63,11 @@ import buildcraft.api.core.IIconProvider;
import buildcraft.api.core.IWorldProperty; import buildcraft.api.core.IWorldProperty;
import buildcraft.api.core.JavaTools; import buildcraft.api.core.JavaTools;
import buildcraft.api.fuels.BuildcraftFuelRegistry; import buildcraft.api.fuels.BuildcraftFuelRegistry;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.StatementManager; import buildcraft.api.gates.StatementManager;
import buildcraft.api.gates.TriggerParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.recipes.BuildcraftRecipeRegistry; import buildcraft.api.recipes.BuildcraftRecipeRegistry;
import buildcraft.core.BlockSpring; import buildcraft.core.BlockSpring;
import buildcraft.core.BuildCraftConfiguration; import buildcraft.core.BuildCraftConfiguration;
@ -344,8 +344,8 @@ public class BuildCraftCore extends BuildCraftMod {
NetworkIdRegistry.instance = new NetworkIdRegistry(); NetworkIdRegistry.instance = new NetworkIdRegistry();
StatementManager.registerParameterClass(TriggerParameterItemStack.class); StatementManager.registerParameterClass(StatementParameterItemStack.class);
StatementManager.registerParameterClass(ActionParameterItemStack.class); StatementManager.registerParameterClass(StatementParameterItemStack.class);
StatementManager.registerParameterClass(StatementParameterDirection.class); StatementManager.registerParameterClass(StatementParameterDirection.class);
StatementManager.registerParameterClass(StatementParameterRedstoneGateSideOnly.class); StatementManager.registerParameterClass(StatementParameterRedstoneGateSideOnly.class);
StatementManager.registerTriggerProvider(new DefaultTriggerProvider()); StatementManager.registerTriggerProvider(new DefaultTriggerProvider());

View file

@ -19,7 +19,7 @@ import buildcraft.BuildCraftCore;
import buildcraft.api.core.IAreaProvider; import buildcraft.api.core.IAreaProvider;
import buildcraft.api.filler.FillerManager; import buildcraft.api.filler.FillerManager;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IActionReceptor; import buildcraft.api.gates.IActionReceptor;
import buildcraft.builders.statements.ActionFiller; import buildcraft.builders.statements.ActionFiller;
import buildcraft.core.Box; import buildcraft.core.Box;
@ -314,7 +314,7 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction
} }
@Override @Override
public void actionActivated(IAction action, IActionParameter[] parameters) { public void actionActivated(IAction action, IStatementParameter[] parameters) {
if (action == BuildCraftCore.actionOn) { if (action == BuildCraftCore.actionOn) {
lastMode = ActionMachineControl.Mode.On; lastMode = ActionMachineControl.Mode.On;
} else if (action == BuildCraftCore.actionOff) { } else if (action == BuildCraftCore.actionOff) {

View file

@ -27,12 +27,12 @@ public class BuildersActionProvider implements IActionProvider {
private final HashMap<String, ActionFiller> actionMap = new HashMap<String, ActionFiller>(); private final HashMap<String, ActionFiller> actionMap = new HashMap<String, ActionFiller>();
@Override @Override
public Collection<IAction> getPipeActions(IPipeTile pipe) { public Collection<IAction> getInternalActions(TileEntity tile) {
return null; return null;
} }
@Override @Override
public Collection<IAction> getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { public Collection<IAction> getExternalActions(ForgeDirection side, TileEntity tile) {
LinkedList<IAction> actions = new LinkedList<IAction>(); LinkedList<IAction> actions = new LinkedList<IAction>();
if (tile instanceof TileFiller) { if (tile instanceof TileFiller) {
for (IFillerPattern p : FillerManager.registry.getPatterns()) { for (IFillerPattern p : FillerManager.registry.getPatterns()) {

View file

@ -12,9 +12,9 @@ import java.util.ArrayList;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.TriggerParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
/** /**
* Returns true if the stack matches any one one of the filter stacks. * Returns true if the stack matches any one one of the filter stacks.
@ -26,7 +26,7 @@ public class StatementParameterStackFilter extends ArrayStackOrListFilter {
for (IStatementParameter s : parameters) { for (IStatementParameter s : parameters) {
if (s != null) { if (s != null) {
if (s instanceof ActionParameterItemStack || s instanceof TriggerParameterItemStack) { if (s instanceof StatementParameterItemStack || s instanceof StatementParameterItemStack) {
tmp.add(s.getItemStack()); tmp.add(s.getItemStack());
} }
} }

View file

@ -15,7 +15,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.AIRobot;
import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.robots.EntityRobotBase;
@ -130,7 +130,7 @@ public class AIRobotSearchStackRequest extends AIRobot {
for (ActionSlot s : new ActionIterator(pipe)) { for (ActionSlot s : new ActionIterator(pipe)) {
if (s.action instanceof ActionStationRequestItems) { if (s.action instanceof ActionStationRequestItems) {
for (IStatementParameter p : s.parameters) { for (IStatementParameter p : s.parameters) {
ActionParameterItemStack param = (ActionParameterItemStack) p; StatementParameterItemStack param = (StatementParameterItemStack) p;
if (param != null && !isBlacklisted(param.getItemStack())) { if (param != null && !isBlacklisted(param.getItemStack())) {
StackRequest req = new StackRequest(); StackRequest req = new StackRequest();

View file

@ -18,8 +18,8 @@ import net.minecraft.world.World;
import buildcraft.api.boards.RedstoneBoardRobot; import buildcraft.api.boards.RedstoneBoardRobot;
import buildcraft.api.core.BlockIndex; import buildcraft.api.core.BlockIndex;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.AIRobot;
import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.robots.EntityRobotBase;
import buildcraft.core.TickHandlerCore; import buildcraft.core.TickHandlerCore;
@ -129,9 +129,9 @@ public abstract class BoardRobotGenericBreakBlock extends RedstoneBoardRobot {
for (ActionSlot slot : new ActionIterator(station.getPipe().pipe)) { for (ActionSlot slot : new ActionIterator(station.getPipe().pipe)) {
if (slot.action instanceof ActionRobotFilter) { if (slot.action instanceof ActionRobotFilter) {
for (IActionParameter p : slot.parameters) { for (IStatementParameter p : slot.parameters) {
if (p != null && p instanceof ActionParameterItemStack) { if (p != null && p instanceof StatementParameterItemStack) {
ActionParameterItemStack param = (ActionParameterItemStack) p; StatementParameterItemStack param = (StatementParameterItemStack) p;
ItemStack stack = param.getItemStack(); ItemStack stack = param.getItemStack();
if (stack != null && stack.getItem() instanceof ItemBlock) { if (stack != null && stack.getItem() instanceof ItemBlock) {

View file

@ -24,8 +24,8 @@ import buildcraft.api.boards.RedstoneBoardRobot;
import buildcraft.api.boards.RedstoneBoardRobotNBT; import buildcraft.api.boards.RedstoneBoardRobotNBT;
import buildcraft.api.core.BlockIndex; import buildcraft.api.core.BlockIndex;
import buildcraft.api.core.BuildCraftAPI; import buildcraft.api.core.BuildCraftAPI;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.AIRobot;
import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.robots.EntityRobotBase;
import buildcraft.core.TickHandlerCore; import buildcraft.core.TickHandlerCore;
@ -116,9 +116,9 @@ public class BoardRobotPump extends RedstoneBoardRobot {
for (ActionSlot slot : new ActionIterator(station.getPipe().pipe)) { for (ActionSlot slot : new ActionIterator(station.getPipe().pipe)) {
if (slot.action instanceof ActionRobotFilter) { if (slot.action instanceof ActionRobotFilter) {
for (IActionParameter p : slot.parameters) { for (IStatementParameter p : slot.parameters) {
if (p != null && p instanceof ActionParameterItemStack) { if (p != null && p instanceof StatementParameterItemStack) {
ActionParameterItemStack param = (ActionParameterItemStack) p; StatementParameterItemStack param = (StatementParameterItemStack) p;
ItemStack stack = param.getItemStack(); ItemStack stack = param.getItemStack();
if (stack != null) { if (stack != null) {

View file

@ -8,7 +8,7 @@
*/ */
package buildcraft.core.statements; package buildcraft.core.statements;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class ActionRedstoneOutput extends BCActionPassive { public class ActionRedstoneOutput extends BCActionPassive {
@ -28,8 +28,8 @@ public class ActionRedstoneOutput extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
IActionParameter param = null; IStatementParameter param = null;
if (index == 0) { if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly(); param = new StatementParameterRedstoneGateSideOnly();

View file

@ -9,7 +9,7 @@
package buildcraft.core.statements; package buildcraft.core.statements;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
public abstract class BCActionActive extends BCStatement implements IAction { public abstract class BCActionActive extends BCStatement implements IAction {
@ -18,7 +18,7 @@ public abstract class BCActionActive extends BCStatement implements IAction {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return null; return null;
} }
} }

View file

@ -9,8 +9,8 @@
package buildcraft.core.statements; package buildcraft.core.statements;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.IStatementParameter;
public abstract class BCActionPassive extends BCStatement implements IAction { public abstract class BCActionPassive extends BCStatement implements IAction {
@ -19,11 +19,11 @@ public abstract class BCActionPassive extends BCStatement implements IAction {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return null; return null;
} }
@Override @Override
public final void actionActivate(IGate gate, IActionParameter[] parameters) { public final void actionActivate(IGate gate, IStatementParameter[] parameters) {
} }
} }

View file

@ -14,8 +14,8 @@ import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.TriggerParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.transport.Pipe; import buildcraft.transport.Pipe;
/** /**
@ -30,8 +30,8 @@ public abstract class BCTrigger extends BCStatement implements ITrigger {
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
ITriggerParameter p = parameters[0]; IStatementParameter p = parameters[0];
Pipe<?> pipe = (Pipe<?>) gate.getPipe(); Pipe<?> pipe = (Pipe<?>) gate.getPipe();
for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
@ -43,12 +43,12 @@ public abstract class BCTrigger extends BCStatement implements ITrigger {
return false; return false;
} }
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
return false; return false;
} }
@Override @Override
public ITriggerParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new TriggerParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -26,12 +26,12 @@ import buildcraft.core.IMachine;
public class DefaultActionProvider implements IActionProvider { public class DefaultActionProvider implements IActionProvider {
@Override @Override
public Collection<IAction> getPipeActions(IPipeTile pipe) { public Collection<IAction> getInternalActions(TileEntity tile) {
return null; return null;
} }
@Override @Override
public Collection<IAction> getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { public Collection<IAction> getExternalActions(ForgeDirection side, TileEntity tile) {
LinkedList<IAction> res = new LinkedList<IAction>(); LinkedList<IAction> res = new LinkedList<IAction>();
res.add(BuildCraftCore.actionRedstone); res.add(BuildCraftCore.actionRedstone);

View file

@ -29,7 +29,7 @@ import buildcraft.core.IMachine;
public class DefaultTriggerProvider implements ITriggerProvider { public class DefaultTriggerProvider implements ITriggerProvider {
@Override @Override
public LinkedList<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { public LinkedList<ITrigger> getExternalTriggers(ForgeDirection side, TileEntity tile) {
LinkedList<ITrigger> res = new LinkedList<ITrigger>(); LinkedList<ITrigger> res = new LinkedList<ITrigger>();
if (tile instanceof IInventory && ((IInventory) tile).getSizeInventory() > 0) { if (tile instanceof IInventory && ((IInventory) tile).getSizeInventory() > 0) {
@ -65,16 +65,11 @@ public class DefaultTriggerProvider implements ITriggerProvider {
res.add(BuildCraftCore.triggerEnergyLow); res.add(BuildCraftCore.triggerEnergyLow);
} }
if (block != null && block.canProvidePower()) {
// res.add(BuildCraftCore.triggerRedstoneActive);
// res.add(BuildCraftCore.triggerRedstoneInactive);
}
return res; return res;
} }
@Override @Override
public LinkedList<ITrigger> getPipeTriggers(IPipeTile pipe) { public LinkedList<ITrigger> getInternalTriggers(TileEntity pipe) {
return null; return null;
} }
} }

View file

@ -14,15 +14,15 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.NetworkData; import buildcraft.api.core.NetworkData;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IStatement; import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipe;
import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.IPipeTile;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class StatementParameterDirection implements IActionParameter, ITriggerParameter { public class StatementParameterDirection implements IStatementParameter {
@NetworkData @NetworkData
public ForgeDirection direction = ForgeDirection.UNKNOWN; public ForgeDirection direction = ForgeDirection.UNKNOWN;

View file

@ -5,15 +5,15 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import buildcraft.api.core.NetworkData; import buildcraft.api.core.NetworkData;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IStatement; import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.IPipeTile;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class StatementParameterRedstoneGateSideOnly implements public class StatementParameterRedstoneGateSideOnly implements
IActionParameter, ITriggerParameter { IStatementParameter {
@NetworkData @NetworkData
public boolean isOn = false; public boolean isOn = false;

View file

@ -20,7 +20,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import cofh.api.energy.IEnergyHandler; import cofh.api.energy.IEnergyHandler;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class TriggerEnergy extends BCTrigger { public class TriggerEnergy extends BCTrigger {
@ -58,7 +58,7 @@ public class TriggerEnergy extends BCTrigger {
return false; return false;
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
if (gate.getPipe() instanceof IEnergyHandler) { if (gate.getPipe() instanceof IEnergyHandler) {
if (isValidEnergyHandler((IEnergyHandler) gate.getPipe())) { if (isValidEnergyHandler((IEnergyHandler) gate.getPipe())) {
return isTriggeredEnergyHandler((IEnergyHandler) gate.getPipe()); return isTriggeredEnergyHandler((IEnergyHandler) gate.getPipe());
@ -72,7 +72,7 @@ public class TriggerEnergy extends BCTrigger {
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
if (tile instanceof IEnergyHandler) { if (tile instanceof IEnergyHandler) {
// Since we return false upon the trigger being invalid anyway, // Since we return false upon the trigger being invalid anyway,
// we can skip the isValidEnergyHandler(...) check. // we can skip the isValidEnergyHandler(...) check.

View file

@ -18,7 +18,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class TriggerFluidContainer extends BCTrigger { public class TriggerFluidContainer extends BCTrigger {
@ -45,7 +45,7 @@ public class TriggerFluidContainer extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
if (tile instanceof IFluidHandler) { if (tile instanceof IFluidHandler) {
IFluidHandler container = (IFluidHandler) tile; IFluidHandler container = (IFluidHandler) tile;

View file

@ -18,7 +18,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class TriggerFluidContainerLevel extends BCTrigger { public class TriggerFluidContainerLevel extends BCTrigger {
@ -52,7 +52,7 @@ public class TriggerFluidContainerLevel extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
if (tile instanceof IFluidHandler) { if (tile instanceof IFluidHandler) {
IFluidHandler container = (IFluidHandler) tile; IFluidHandler container = (IFluidHandler) tile;

View file

@ -17,7 +17,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.IInvSlot; import buildcraft.api.core.IInvSlot;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.ItemList; import buildcraft.core.ItemList;
import buildcraft.core.inventory.InventoryIterator; import buildcraft.core.inventory.InventoryIterator;
import buildcraft.core.inventory.StackHelper; import buildcraft.core.inventory.StackHelper;
@ -48,7 +48,7 @@ public class TriggerInventory extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
ItemStack searchedStack = null; ItemStack searchedStack = null;
if (parameter != null) { if (parameter != null) {

View file

@ -17,7 +17,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.IInvSlot; import buildcraft.api.core.IInvSlot;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.inventory.InventoryIterator; import buildcraft.core.inventory.InventoryIterator;
import buildcraft.core.inventory.StackHelper; import buildcraft.core.inventory.StackHelper;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -58,7 +58,7 @@ public class TriggerInventoryLevel extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
// A parameter is required // A parameter is required
if (parameter == null) { if (parameter == null) {
return false; return false;

View file

@ -12,7 +12,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.IMachine; import buildcraft.core.IMachine;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -32,7 +32,7 @@ public class TriggerMachine extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
if (tile instanceof IMachine) { if (tile instanceof IMachine) {
IMachine machine = (IMachine) tile; IMachine machine = (IMachine) tile;

View file

@ -9,7 +9,7 @@
package buildcraft.core.statements; package buildcraft.core.statements;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
import buildcraft.transport.TileGenericPipe; import buildcraft.transport.TileGenericPipe;
@ -28,8 +28,8 @@ public class TriggerRedstoneInput extends BCTrigger {
} }
@Override @Override
public ITriggerParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
ITriggerParameter param = null; IStatementParameter param = null;
if (index == 0) { if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly(); param = new StatementParameterRedstoneGateSideOnly();
@ -44,7 +44,7 @@ public class TriggerRedstoneInput extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
TileGenericPipe tile = (TileGenericPipe) gate.getPipe().getTile(); TileGenericPipe tile = (TileGenericPipe) gate.getPipe().getTile();
int level = tile.redstoneInput; int level = tile.redstoneInput;
if (parameters.length > 0 && parameters[0] instanceof StatementParameterRedstoneGateSideOnly && if (parameters.length > 0 && parameters[0] instanceof StatementParameterRedstoneGateSideOnly &&

View file

@ -17,12 +17,12 @@ import buildcraft.energy.TileEngine;
public class EnergyStatementProvider implements ITriggerProvider { public class EnergyStatementProvider implements ITriggerProvider {
@Override @Override
public Collection<ITrigger> getPipeTriggers(IPipeTile pipe) { public Collection<ITrigger> getInternalTriggers(TileEntity pipe) {
return null; return null;
} }
@Override @Override
public Collection<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { public Collection<ITrigger> getExternalTriggers(ForgeDirection side, TileEntity tile) {
LinkedList<ITrigger> triggers = new LinkedList<ITrigger>(); LinkedList<ITrigger> triggers = new LinkedList<ITrigger>();
if (tile instanceof TileEngine) { if (tile instanceof TileEngine) {

View file

@ -15,7 +15,7 @@ import net.minecraft.tileentity.TileEntity;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCTrigger; import buildcraft.core.statements.BCTrigger;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
import buildcraft.energy.TileEngine; import buildcraft.energy.TileEngine;
@ -37,7 +37,7 @@ public class TriggerEngineHeat extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(ForgeDirection side, TileEntity tile, ITriggerParameter parameter) { public boolean isTriggerActive(ForgeDirection side, TileEntity tile, IStatementParameter parameter) {
if (tile instanceof TileEngine) { if (tile instanceof TileEngine) {
TileEngine engine = (TileEngine) tile; TileEngine engine = (TileEngine) tile;

View file

@ -21,7 +21,7 @@ import buildcraft.api.core.NetworkData;
import buildcraft.api.core.Position; import buildcraft.api.core.Position;
import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.core.SafeTimeTracker;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IActionReceptor; import buildcraft.api.gates.IActionReceptor;
import buildcraft.api.power.ILaserTarget; import buildcraft.api.power.ILaserTarget;
import buildcraft.api.power.ILaserTargetBlock; import buildcraft.api.power.ILaserTargetBlock;
@ -299,7 +299,7 @@ public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachi
} }
@Override @Override
public void actionActivated(IAction action, IActionParameter[] parameters) { public void actionActivated(IAction action, IStatementParameter[] parameters) {
if (action == BuildCraftCore.actionOn) { if (action == BuildCraftCore.actionOn) {
lastMode = ActionMachineControl.Mode.On; lastMode = ActionMachineControl.Mode.On;
} else if (action == BuildCraftCore.actionOff) { } else if (action == BuildCraftCore.actionOff) {

View file

@ -16,7 +16,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import buildcraft.BuildCraftCore; import buildcraft.BuildCraftCore;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IActionReceptor; import buildcraft.api.gates.IActionReceptor;
import buildcraft.api.power.ILaserTarget; import buildcraft.api.power.ILaserTarget;
import buildcraft.core.IMachine; import buildcraft.core.IMachine;
@ -220,7 +220,7 @@ public abstract class TileLaserTableBase extends TileBuildCraft implements ILase
} }
@Override @Override
public void actionActivated(IAction action, IActionParameter[] parameters) { public void actionActivated(IAction action, IStatementParameter[] parameters) {
if (action == BuildCraftCore.actionOn) { if (action == BuildCraftCore.actionOn) {
lastMode = ActionMachineControl.Mode.On; lastMode = ActionMachineControl.Mode.On;
} else if (action == BuildCraftCore.actionOff) { } else if (action == BuildCraftCore.actionOff) {

View file

@ -15,8 +15,8 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.robots.IDockingStation; import buildcraft.api.robots.IDockingStation;
import buildcraft.core.inventory.filters.ArrayFluidFilter; import buildcraft.core.inventory.filters.ArrayFluidFilter;
import buildcraft.core.inventory.filters.ArrayStackOrListFilter; import buildcraft.core.inventory.filters.ArrayStackOrListFilter;
@ -59,8 +59,8 @@ public class ActionRobotFilter extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
public static Collection<ItemStack> getGateFilterStacks(IDockingStation station) { public static Collection<ItemStack> getGateFilterStacks(IDockingStation station) {
@ -68,9 +68,9 @@ public class ActionRobotFilter extends BCActionPassive {
for (ActionSlot slot : new ActionIterator(((DockingStation) station).getPipe().pipe)) { for (ActionSlot slot : new ActionIterator(((DockingStation) station).getPipe().pipe)) {
if (slot.action instanceof ActionRobotFilter) { if (slot.action instanceof ActionRobotFilter) {
for (IActionParameter p : slot.parameters) { for (IStatementParameter p : slot.parameters) {
if (p != null && p instanceof ActionParameterItemStack) { if (p != null && p instanceof StatementParameterItemStack) {
ActionParameterItemStack param = (ActionParameterItemStack) p; StatementParameterItemStack param = (StatementParameterItemStack) p;
ItemStack stack = param.getItemStack(); ItemStack stack = param.getItemStack();
if (stack != null) { if (stack != null) {

View file

@ -12,8 +12,8 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.BlockIndex; import buildcraft.api.core.BlockIndex;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.AIRobot;
import buildcraft.core.ItemMapLocation; import buildcraft.core.ItemMapLocation;
@ -43,7 +43,7 @@ public class ActionRobotGotoStation extends BCActionActive {
} }
@Override @Override
public void actionActivate(IGate gate, IActionParameter[] parameters) { public void actionActivate(IGate gate, IStatementParameter[] parameters) {
Pipe<?> pipe = (Pipe<?>) gate.getPipe(); Pipe<?> pipe = (Pipe<?>) gate.getPipe();
TileGenericPipe tile = pipe.container; TileGenericPipe tile = pipe.container;
RobotRegistry registry = RobotRegistry.getRegistry(pipe.getWorld()); RobotRegistry registry = RobotRegistry.getRegistry(pipe.getWorld());
@ -62,7 +62,7 @@ public class ActionRobotGotoStation extends BCActionActive {
DockingStation newStation = station; DockingStation newStation = station;
if (parameters[0] != null) { if (parameters[0] != null) {
ActionParameterItemStack stackParam = (ActionParameterItemStack) parameters[0]; StatementParameterItemStack stackParam = (StatementParameterItemStack) parameters[0];
ItemStack item = stackParam.getItemStack(); ItemStack item = stackParam.getItemStack();
if (item.getItem() instanceof ItemMapLocation) { if (item.getItem() instanceof ItemMapLocation) {
@ -92,8 +92,8 @@ public class ActionRobotGotoStation extends BCActionActive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -11,8 +11,8 @@ package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import buildcraft.api.core.IZone; import buildcraft.api.core.IZone;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.ItemMapLocation; import buildcraft.core.ItemMapLocation;
import buildcraft.core.statements.BCActionPassive; import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -39,7 +39,7 @@ public class ActionRobotWorkInArea extends BCActionPassive {
return null; return null;
} }
ItemStack stack = ((ActionParameterItemStack) slot.parameters[0]).getItemStack(); ItemStack stack = ((StatementParameterItemStack) slot.parameters[0]).getItemStack();
if (!(stack.getItem() instanceof ItemMapLocation)) { if (!(stack.getItem() instanceof ItemMapLocation)) {
return null; return null;
@ -59,7 +59,7 @@ public class ActionRobotWorkInArea extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -9,8 +9,8 @@
package buildcraft.silicon.statements; package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCActionPassive; import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -36,7 +36,7 @@ public class ActionStationAcceptFluids extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -16,8 +16,8 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.IInvSlot; import buildcraft.api.core.IInvSlot;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.inventory.ITransactor; import buildcraft.core.inventory.ITransactor;
import buildcraft.core.inventory.Transactor; import buildcraft.core.inventory.Transactor;
import buildcraft.core.robots.DockingStation; import buildcraft.core.robots.DockingStation;
@ -47,8 +47,8 @@ public class ActionStationAcceptItemsInv extends ActionStationInputItems {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
@Override @Override

View file

@ -11,8 +11,8 @@ package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import buildcraft.api.core.IInvSlot; import buildcraft.api.core.IInvSlot;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.robots.DockingStation; import buildcraft.core.robots.DockingStation;
import buildcraft.core.robots.EntityRobot; import buildcraft.core.robots.EntityRobot;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -42,8 +42,8 @@ public class ActionStationAcceptItemsPipe extends ActionStationInputItems {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
@Override @Override

View file

@ -9,8 +9,8 @@
package buildcraft.silicon.statements; package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCActionPassive; import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -36,7 +36,7 @@ public class ActionStationAllowCraft extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -10,8 +10,8 @@ package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.robots.EntityRobotBase;
import buildcraft.core.ItemRobot; import buildcraft.core.ItemRobot;
import buildcraft.core.robots.DockingStation; import buildcraft.core.robots.DockingStation;
@ -47,8 +47,8 @@ public class ActionStationForbidRobot extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
public static boolean isForbidden(DockingStation station, EntityRobotBase robot) { public static boolean isForbidden(DockingStation station, EntityRobotBase robot) {
@ -64,9 +64,9 @@ public class ActionStationForbidRobot extends BCActionPassive {
} }
public static boolean isForbidden(ActionSlot slot, EntityRobotBase robot) { public static boolean isForbidden(ActionSlot slot, EntityRobotBase robot) {
for (IActionParameter p : slot.parameters) { for (IStatementParameter p : slot.parameters) {
if (p != null) { if (p != null) {
ActionParameterItemStack actionStack = (ActionParameterItemStack) p; StatementParameterItemStack actionStack = (StatementParameterItemStack) p;
ItemStack stack = p.getItemStack(); ItemStack stack = p.getItemStack();
if (stack != null && stack.getItem() instanceof ItemRobot) { if (stack != null && stack.getItem() instanceof ItemRobot) {

View file

@ -9,8 +9,8 @@
package buildcraft.silicon.statements; package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCActionPassive; import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -36,7 +36,7 @@ public class ActionStationProvideFluids extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -9,8 +9,8 @@
package buildcraft.silicon.statements; package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCActionPassive; import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -36,7 +36,7 @@ public class ActionStationProvideItems extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
} }

View file

@ -16,8 +16,8 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.core.IInvSlot; import buildcraft.api.core.IInvSlot;
import buildcraft.api.gates.ActionParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.inventory.ITransactor; import buildcraft.core.inventory.ITransactor;
import buildcraft.core.inventory.Transactor; import buildcraft.core.inventory.Transactor;
import buildcraft.core.robots.DockingStation; import buildcraft.core.robots.DockingStation;
@ -52,8 +52,8 @@ public class ActionStationRequestItems extends ActionStationInputItems {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterItemStack(); return new StatementParameterItemStack();
} }
@Override @Override

View file

@ -34,14 +34,18 @@ import buildcraft.transport.TileGenericPipe;
public class RobotsActionProvider implements IActionProvider { public class RobotsActionProvider implements IActionProvider {
@Override @Override
public Collection<IAction> getPipeActions(IPipeTile pipe) { public Collection<IAction> getInternalActions(TileEntity tile) {
if (!(tile instanceof TileGenericPipe)) {
return null;
}
LinkedList<IAction> result = new LinkedList<IAction>(); LinkedList<IAction> result = new LinkedList<IAction>();
ArrayList<DockingStation> stations = new ArrayList<DockingStation>(); ArrayList<DockingStation> stations = new ArrayList<DockingStation>();
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if (((TileGenericPipe) pipe).getStation(dir) != null) { if (((TileGenericPipe) tile).getStation(dir) != null) {
stations.add(((TileGenericPipe) pipe).getStation(dir)); stations.add(((TileGenericPipe) tile).getStation(dir));
} }
} }
@ -55,32 +59,32 @@ public class RobotsActionProvider implements IActionProvider {
result.add(BuildCraftSilicon.actionRobotFilter); result.add(BuildCraftSilicon.actionRobotFilter);
result.add(BuildCraftSilicon.actionStationForbidRobot); result.add(BuildCraftSilicon.actionStationForbidRobot);
if (((TileGenericPipe) pipe).pipe.transport instanceof PipeTransportItems) { if (((TileGenericPipe) tile).pipe.transport instanceof PipeTransportItems) {
result.add(BuildCraftSilicon.actionStationDropInPipe); result.add(BuildCraftSilicon.actionStationDropInPipe);
} }
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
TileEntity tile = ((TileGenericPipe) pipe).getTile(dir); TileEntity sideTile = ((TileGenericPipe) tile).getTile(dir);
Block block = ((TileGenericPipe) pipe).getBlock(dir); Block sideBlock = ((TileGenericPipe) tile).getBlock(dir);
if (tile instanceof IInventory) { if (sideTile instanceof IInventory) {
result.add(BuildCraftSilicon.actionStationProvideItems); result.add(BuildCraftSilicon.actionStationProvideItems);
result.add(BuildCraftSilicon.actionStationRequestItems); result.add(BuildCraftSilicon.actionStationRequestItems);
result.add(BuildCraftSilicon.actionStationAcceptItems); result.add(BuildCraftSilicon.actionStationAcceptItems);
} }
if (tile instanceof IFluidHandler) { if (sideTile instanceof IFluidHandler) {
result.add(BuildCraftSilicon.actionStationAcceptFluids); result.add(BuildCraftSilicon.actionStationAcceptFluids);
result.add(BuildCraftSilicon.actionStationProvideFluids); result.add(BuildCraftSilicon.actionStationProvideFluids);
} }
if (tile instanceof IRequestProvider) { if (sideTile instanceof IRequestProvider) {
result.add(BuildCraftSilicon.actionStationMachineRequestItems); result.add(BuildCraftSilicon.actionStationMachineRequestItems);
} }
if (tile instanceof TileEntityFurnace if (sideTile instanceof TileEntityFurnace
|| tile instanceof TileAssemblyTable || sideTile instanceof TileAssemblyTable
|| block instanceof BlockWorkbench) { || sideBlock instanceof BlockWorkbench) {
result.add(BuildCraftSilicon.actionRobotAllowCraft); result.add(BuildCraftSilicon.actionRobotAllowCraft);
} }
} }
@ -89,7 +93,7 @@ public class RobotsActionProvider implements IActionProvider {
} }
@Override @Override
public Collection<IAction> getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { public Collection<IAction> getExternalActions(ForgeDirection side, TileEntity tile) {
return null; return null;
} }

View file

@ -25,13 +25,17 @@ import buildcraft.transport.TileGenericPipe;
public class RobotsTriggerProvider implements ITriggerProvider { public class RobotsTriggerProvider implements ITriggerProvider {
@Override @Override
public Collection<ITrigger> getPipeTriggers(IPipeTile pipe) { public Collection<ITrigger> getInternalTriggers(TileEntity tile) {
LinkedList<ITrigger> result = new LinkedList<ITrigger>(); LinkedList<ITrigger> result = new LinkedList<ITrigger>();
if (!(tile instanceof TileGenericPipe)) {
return result;
}
boolean stationFound = false; boolean stationFound = false;
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if (((TileGenericPipe) pipe).getStation(dir) != null) { if (((TileGenericPipe) tile).getStation(dir) != null) {
stationFound = true; stationFound = true;
break; break;
} }
@ -47,7 +51,7 @@ public class RobotsTriggerProvider implements ITriggerProvider {
} }
@Override @Override
public Collection<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { public Collection<ITrigger> getExternalTriggers(ForgeDirection side, TileEntity tile) {
return null; return null;
} }

View file

@ -11,7 +11,7 @@ package buildcraft.silicon.statements;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.robots.AIRobotSleep; import buildcraft.core.robots.AIRobotSleep;
import buildcraft.core.robots.DockingStation; import buildcraft.core.robots.DockingStation;
import buildcraft.core.robots.EntityRobot; import buildcraft.core.robots.EntityRobot;
@ -37,7 +37,7 @@ public class TriggerRobotSleep extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
Pipe<?> pipe = (Pipe<?>) gate.getPipe(); Pipe<?> pipe = (Pipe<?>) gate.getPipe();
TileGenericPipe tile = pipe.container; TileGenericPipe tile = pipe.container;

View file

@ -25,14 +25,13 @@ import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.BuildCraftTransport; import buildcraft.BuildCraftTransport;
import buildcraft.api.gates.GateExpansionController; import buildcraft.api.gates.GateExpansionController;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter;
import buildcraft.api.gates.IActionReceptor; import buildcraft.api.gates.IActionReceptor;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.IGateExpansion; import buildcraft.api.gates.IGateExpansion;
import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter;
import buildcraft.api.gates.StatementManager; import buildcraft.api.gates.StatementManager;
import buildcraft.api.gates.TriggerParameterItemStack; import buildcraft.api.gates.StatementParameterItemStack;
import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipe;
import buildcraft.api.transport.PipeWire; import buildcraft.api.transport.PipeWire;
import buildcraft.core.GuiIds; import buildcraft.core.GuiIds;
@ -56,10 +55,10 @@ public final class Gate implements IGate {
public final BiMap<IGateExpansion, GateExpansionController> expansions = HashBiMap.create(); public final BiMap<IGateExpansion, GateExpansionController> expansions = HashBiMap.create();
public ITrigger[] triggers = new ITrigger[MAX_STATEMENTS]; public ITrigger[] triggers = new ITrigger[MAX_STATEMENTS];
public ITriggerParameter[][] triggerParameters = new ITriggerParameter[8][MAX_PARAMETERS]; public IStatementParameter[][] triggerParameters = new IStatementParameter[MAX_STATEMENTS][MAX_PARAMETERS];
public IAction[] actions = new IAction[MAX_STATEMENTS]; public IAction[] actions = new IAction[MAX_STATEMENTS];
public IActionParameter[][] actionParameters = new IActionParameter[8][MAX_PARAMETERS]; public IStatementParameter[][] actionParameters = new IStatementParameter[MAX_STATEMENTS][MAX_PARAMETERS];
public ActionActiveState[] actionsState = new ActionActiveState[MAX_STATEMENTS]; public ActionActiveState[] actionsState = new ActionActiveState[MAX_STATEMENTS];
public ArrayList<ActionSlot> activeActions = new ArrayList<ActionSlot>(); public ArrayList<ActionSlot> activeActions = new ArrayList<ActionSlot>();
@ -106,19 +105,19 @@ public final class Gate implements IGate {
return actions[position]; return actions[position];
} }
public void setTriggerParameter(int trigger, int param, ITriggerParameter p) { public void setTriggerParameter(int trigger, int param, IStatementParameter p) {
triggerParameters[trigger][param] = p; triggerParameters[trigger][param] = p;
} }
public void setActionParameter(int action, int param, IActionParameter p) { public void setActionParameter(int action, int param, IStatementParameter p) {
actionParameters[action][param] = p; actionParameters[action][param] = p;
} }
public ITriggerParameter getTriggerParameter(int trigger, int param) { public IStatementParameter getTriggerParameter(int trigger, int param) {
return triggerParameters[trigger][param]; return triggerParameters[trigger][param];
} }
public IActionParameter getActionParameter(int action, int param) { public IStatementParameter getActionParameter(int action, int param) {
return actionParameters[action][param]; return actionParameters[action][param];
} }
@ -203,14 +202,14 @@ public final class Gate implements IGate {
// This is for legacy trigger loading // This is for legacy trigger loading
if (data.hasKey("triggerParameters[" + i + "]")) { if (data.hasKey("triggerParameters[" + i + "]")) {
triggerParameters[i][0] = new TriggerParameterItemStack(); triggerParameters[i][0] = new StatementParameterItemStack();
triggerParameters[i][0].readFromNBT(data.getCompoundTag("triggerParameters[" + i + "]")); triggerParameters[i][0].readFromNBT(data.getCompoundTag("triggerParameters[" + i + "]"));
} }
for (int j = 0; j < material.numTriggerParameters; ++j) { for (int j = 0; j < material.numTriggerParameters; ++j) {
if (data.hasKey("triggerParameters[" + i + "][" + j + "]")) { if (data.hasKey("triggerParameters[" + i + "][" + j + "]")) {
NBTTagCompound cpt = data.getCompoundTag("triggerParameters[" + i + "][" + j + "]"); NBTTagCompound cpt = data.getCompoundTag("triggerParameters[" + i + "][" + j + "]");
triggerParameters[i][j] = (ITriggerParameter) StatementManager.createParameter(cpt.getString("kind")); triggerParameters[i][j] = StatementManager.createParameter(cpt.getString("kind"));
triggerParameters[i][j].readFromNBT(cpt); triggerParameters[i][j].readFromNBT(cpt);
} }
} }
@ -218,7 +217,7 @@ public final class Gate implements IGate {
for (int j = 0; j < material.numActionParameters; ++j) { for (int j = 0; j < material.numActionParameters; ++j) {
if (data.hasKey("actionParameters[" + i + "][" + j + "]")) { if (data.hasKey("actionParameters[" + i + "][" + j + "]")) {
NBTTagCompound cpt = data.getCompoundTag("actionParameters[" + i + "][" + j + "]"); NBTTagCompound cpt = data.getCompoundTag("actionParameters[" + i + "][" + j + "]");
actionParameters[i][j] = (IActionParameter) StatementManager.createParameter(cpt.getString("kind")); actionParameters[i][j] = StatementManager.createParameter(cpt.getString("kind"));
actionParameters[i][j].readFromNBT(cpt); actionParameters[i][j].readFromNBT(cpt);
} }
} }
@ -394,7 +393,7 @@ public final class Gate implements IGate {
actionsState[it] = ActionActiveState.Deactivated; actionsState[it] = ActionActiveState.Deactivated;
ITrigger trigger = triggers[it]; ITrigger trigger = triggers[it];
ITriggerParameter[] parameter = triggerParameters[it]; IStatementParameter[] parameter = triggerParameters[it];
if (trigger != null) { if (trigger != null) {
if (isTriggerActive(trigger, parameter)) { if (isTriggerActive(trigger, parameter)) {
@ -504,7 +503,7 @@ public final class Gate implements IGate {
return false; return false;
} }
public boolean isTriggerActive(ITrigger trigger, ITriggerParameter[] parameters) { public boolean isTriggerActive(ITrigger trigger, IStatementParameter[] parameters) {
if (trigger == null) { if (trigger == null) {
return false; return false;
} }
@ -516,7 +515,7 @@ public final class Gate implements IGate {
// TODO: This can probably be refactored with regular triggers instead // TODO: This can probably be refactored with regular triggers instead
// of yet another system. // of yet another system.
for (GateExpansionController expansion : expansions.values()) { for (GateExpansionController expansion : expansions.values()) {
if (expansion.isTriggerActive(trigger, parameters[0])) { if (expansion.isTriggerActive(trigger, parameters)) {
return true; return true;
} }
} }
@ -540,12 +539,12 @@ public final class Gate implements IGate {
public List<ITrigger> getAllValidTriggers() { public List<ITrigger> getAllValidTriggers() {
ArrayList<ITrigger> allTriggers = new ArrayList<ITrigger>(64); ArrayList<ITrigger> allTriggers = new ArrayList<ITrigger>(64);
allTriggers.addAll(StatementManager.getPipeTriggers(pipe.container)); allTriggers.addAll(StatementManager.getInternalTriggers(pipe.container));
for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) {
TileEntity tile = pipe.container.getTile(o); TileEntity tile = pipe.container.getTile(o);
Block block = pipe.container.getBlock(o); Block block = pipe.container.getBlock(o);
allTriggers.addAll(StatementManager.getNeighborTriggers(o, block, tile)); allTriggers.addAll(StatementManager.getExternalTriggers(o, tile));
} }
return allTriggers; return allTriggers;
@ -566,12 +565,12 @@ public final class Gate implements IGate {
public List<IAction> getAllValidActions() { public List<IAction> getAllValidActions() {
ArrayList<IAction> allActions = new ArrayList<IAction>(64); ArrayList<IAction> allActions = new ArrayList<IAction>(64);
allActions.addAll(StatementManager.getPipeActions(pipe.container)); allActions.addAll(StatementManager.getInternalActions(pipe.container));
for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) { for (ForgeDirection o : ForgeDirection.VALID_DIRECTIONS) {
TileEntity tile = pipe.container.getTile(o); TileEntity tile = pipe.container.getTile(o);
Block block = pipe.container.getBlock(o); Block block = pipe.container.getBlock(o);
allActions.addAll(StatementManager.getNeighborActions(o, block, tile)); allActions.addAll(StatementManager.getExternalActions(o, tile));
} }
return allActions; return allActions;

View file

@ -13,7 +13,7 @@ import buildcraft.api.transport.IPipeTile;
public class PipeActionProvider implements IActionProvider { public class PipeActionProvider implements IActionProvider {
@Override @Override
public Collection<IAction> getPipeActions(IPipeTile tile) { public Collection<IAction> getInternalActions(TileEntity tile) {
LinkedList<IAction> result = new LinkedList<IAction>(); LinkedList<IAction> result = new LinkedList<IAction>();
Pipe<?> pipe = null; Pipe<?> pipe = null;
if (tile instanceof TileGenericPipe) { if (tile instanceof TileGenericPipe) {
@ -36,7 +36,7 @@ public class PipeActionProvider implements IActionProvider {
} }
@Override @Override
public Collection<IAction> getNeighborActions(ForgeDirection side, Block block, TileEntity tile) { public Collection<IAction> getExternalActions(ForgeDirection side, TileEntity tile) {
return null; return null;
} }

View file

@ -23,7 +23,7 @@ import buildcraft.transport.statements.TriggerPipeContents;
public class PipeTriggerProvider implements ITriggerProvider { public class PipeTriggerProvider implements ITriggerProvider {
@Override @Override
public LinkedList<ITrigger> getPipeTriggers(IPipeTile tile) { public LinkedList<ITrigger> getInternalTriggers(TileEntity tile) {
LinkedList<ITrigger> result = new LinkedList<ITrigger>(); LinkedList<ITrigger> result = new LinkedList<ITrigger>();
Pipe<?> pipe = null; Pipe<?> pipe = null;
if (tile instanceof TileGenericPipe) { if (tile instanceof TileGenericPipe) {
@ -46,7 +46,7 @@ public class PipeTriggerProvider implements ITriggerProvider {
result.add(BuildCraftCore.triggerRedstoneActive); result.add(BuildCraftCore.triggerRedstoneActive);
result.add(BuildCraftCore.triggerRedstoneInactive); result.add(BuildCraftCore.triggerRedstoneInactive);
switch (tile.getPipeType()) { switch (((TileGenericPipe) tile).getPipeType()) {
case ITEM: case ITEM:
result.add(TriggerPipeContents.PipeContents.empty.trigger); result.add(TriggerPipeContents.PipeContents.empty.trigger);
result.add(TriggerPipeContents.PipeContents.containsItems.trigger); result.add(TriggerPipeContents.PipeContents.containsItems.trigger);
@ -74,7 +74,7 @@ public class PipeTriggerProvider implements ITriggerProvider {
} }
@Override @Override
public LinkedList<ITrigger> getNeighborTriggers(ForgeDirection side, Block block, TileEntity tile) { public LinkedList<ITrigger> getExternalTriggers(ForgeDirection side, TileEntity tile) {
return null; return null;
} }
} }

View file

@ -9,9 +9,9 @@
package buildcraft.transport.gates; package buildcraft.transport.gates;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
public class ActionSlot { public class ActionSlot {
public IAction action; public IAction action;
public IActionParameter[] parameters; public IStatementParameter[] parameters;
} }

View file

@ -15,8 +15,8 @@ import buildcraft.BuildCraftTransport;
import buildcraft.api.gates.GateExpansionController; import buildcraft.api.gates.GateExpansionController;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.IGateExpansion; import buildcraft.api.gates.IGateExpansion;
import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter;
import buildcraft.transport.statements.TriggerClockTimer; import buildcraft.transport.statements.TriggerClockTimer;
import buildcraft.transport.statements.TriggerClockTimer.Time; import buildcraft.transport.statements.TriggerClockTimer.Time;
@ -67,12 +67,12 @@ public final class GateExpansionTimer extends GateExpansionBuildcraft implements
} }
@Override @Override
public boolean isTriggerActive(ITrigger trigger, ITriggerParameter parameter) { public boolean isTriggerActive(ITrigger trigger, IStatementParameter[] parameters) {
if (trigger instanceof TriggerClockTimer) { if (trigger instanceof TriggerClockTimer) {
TriggerClockTimer timerTrigger = (TriggerClockTimer) trigger; TriggerClockTimer timerTrigger = (TriggerClockTimer) trigger;
return timers[timerTrigger.time.ordinal()].isActive(); return timers[timerTrigger.time.ordinal()].isActive();
} }
return super.isTriggerActive(trigger, parameter); return super.isTriggerActive(trigger, parameters);
} }
@Override @Override

View file

@ -21,10 +21,10 @@ import net.minecraft.inventory.Slot;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IStatement; import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.StatementManager; import buildcraft.api.gates.StatementManager;
import buildcraft.core.gui.BuildCraftContainer; import buildcraft.core.gui.BuildCraftContainer;
import buildcraft.core.network.RPC; import buildcraft.core.network.RPC;
@ -320,7 +320,7 @@ public class ContainerGateInterface extends BuildCraftContainer {
} }
@RPC(RPCSide.BOTH) @RPC(RPCSide.BOTH)
public void setTriggerParameter(int trigger, int param, ITriggerParameter parameter, boolean notifyServer) { public void setTriggerParameter(int trigger, int param, IStatementParameter parameter, boolean notifyServer) {
if (gate == null) { if (gate == null) {
return; return;
} }
@ -332,7 +332,7 @@ public class ContainerGateInterface extends BuildCraftContainer {
} }
} }
public ITriggerParameter getTriggerParameter(int trigger, int param) { public IStatementParameter getTriggerParameter(int trigger, int param) {
if (gate == null) { if (gate == null) {
return null; return null;
} else { } else {
@ -385,7 +385,7 @@ public class ContainerGateInterface extends BuildCraftContainer {
} }
@RPC(RPCSide.BOTH) @RPC(RPCSide.BOTH)
public void setActionParameter(int action, int param, IActionParameter parameter, boolean notifyServer) { public void setActionParameter(int action, int param, IStatementParameter parameter, boolean notifyServer) {
if (gate == null) { if (gate == null) {
return; return;
} }

View file

@ -22,11 +22,11 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import buildcraft.api.gates.IAction; import buildcraft.api.gates.IAction;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IStatement; import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.ITrigger; import buildcraft.api.gates.ITrigger;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.gui.AdvancedSlot; import buildcraft.core.gui.AdvancedSlot;
import buildcraft.core.gui.GuiAdvancedInterface; import buildcraft.core.gui.GuiAdvancedInterface;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -183,7 +183,7 @@ public class GuiGateInterface extends GuiAdvancedInterface {
@Override @Override
public void setParameter(IStatementParameter param, boolean notifyServer) { public void setParameter(IStatementParameter param, boolean notifyServer) {
container.setTriggerParameter(statementSlot.slot, slot, (ITriggerParameter) param, notifyServer); container.setTriggerParameter(statementSlot.slot, slot, (IStatementParameter) param, notifyServer);
} }
} }
@ -199,7 +199,7 @@ public class GuiGateInterface extends GuiAdvancedInterface {
@Override @Override
public void setParameter(IStatementParameter param, boolean notifyServer) { public void setParameter(IStatementParameter param, boolean notifyServer) {
container.setActionParameter(statementSlot.slot, slot, (IActionParameter) param, notifyServer); container.setActionParameter(statementSlot.slot, slot, (IStatementParameter) param, notifyServer);
} }
} }

View file

@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import buildcraft.api.core.NetworkData; import buildcraft.api.core.NetworkData;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IStatement; import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipe;
@ -24,7 +24,7 @@ import buildcraft.api.transport.PipeWire;
import buildcraft.core.statements.StatementIconProvider; import buildcraft.core.statements.StatementIconProvider;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class ActionParameterSignal implements IActionParameter { public class ActionParameterSignal implements IStatementParameter {
@NetworkData @NetworkData
public PipeWire color = null; public PipeWire color = null;

View file

@ -12,7 +12,7 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCActionPassive; import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly; import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -45,8 +45,8 @@ public class ActionRedstoneFaderOutput extends BCActionPassive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
IActionParameter param = null; IStatementParameter param = null;
if (index == 0) { if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly(); param = new StatementParameterRedstoneGateSideOnly();

View file

@ -10,7 +10,7 @@ package buildcraft.transport.statements;
import java.util.Locale; import java.util.Locale;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.transport.PipeWire; import buildcraft.api.transport.PipeWire;
import buildcraft.core.statements.BCActionActive; import buildcraft.core.statements.BCActionActive;
@ -54,17 +54,17 @@ public class ActionSignalOutput extends BCActionActive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new ActionParameterSignal(); return new ActionParameterSignal();
} }
@Override @Override
public void actionActivate(IGate iGate, IActionParameter[] parameters) { public void actionActivate(IGate iGate, IStatementParameter[] parameters) {
Gate gate = (Gate) iGate; Gate gate = (Gate) iGate;
gate.broadcastSignal(color); gate.broadcastSignal(color);
for (IActionParameter param : parameters) { for (IStatementParameter param : parameters) {
if (param != null) { if (param != null) {
ActionParameterSignal signal = (ActionParameterSignal) param; ActionParameterSignal signal = (ActionParameterSignal) param;

View file

@ -12,7 +12,7 @@ import java.util.Locale;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.api.gates.IActionParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipe;
import buildcraft.core.statements.BCActionActive; import buildcraft.core.statements.BCActionActive;
@ -68,8 +68,8 @@ public class ActionValve extends BCActionActive {
} }
@Override @Override
public IActionParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
IActionParameter param = null; IStatementParameter param = null;
if (index == 0) { if (index == 0) {
param = new StatementParameterDirection(); param = new StatementParameterDirection();
@ -79,7 +79,7 @@ public class ActionValve extends BCActionActive {
} }
@Override @Override
public void actionActivate(IGate gate, IActionParameter[] parameters) { public void actionActivate(IGate gate, IStatementParameter[] parameters) {
IPipe pipe = gate.getPipe(); IPipe pipe = gate.getPipe();
if (pipe != null && pipe instanceof Pipe) { if (pipe != null && pipe instanceof Pipe) {

View file

@ -17,13 +17,13 @@ import net.minecraft.util.IIcon;
import buildcraft.api.core.NetworkData; import buildcraft.api.core.NetworkData;
import buildcraft.api.gates.IStatement; import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.IStatementParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.transport.IPipeTile; import buildcraft.api.transport.IPipeTile;
import buildcraft.api.transport.PipeWire; import buildcraft.api.transport.PipeWire;
import buildcraft.core.statements.StatementIconProvider; import buildcraft.core.statements.StatementIconProvider;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
public class TriggerParameterSignal implements ITriggerParameter { public class TriggerParameterSignal implements IStatementParameter {
@NetworkData @NetworkData
public boolean active = false; public boolean active = false;

View file

@ -18,7 +18,7 @@ import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.inventory.StackHelper; import buildcraft.core.inventory.StackHelper;
import buildcraft.core.statements.BCTrigger; import buildcraft.core.statements.BCTrigger;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -64,9 +64,9 @@ public class TriggerPipeContents extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
Pipe<?> pipe = (Pipe<?>) gate.getPipe(); Pipe<?> pipe = (Pipe<?>) gate.getPipe();
ITriggerParameter parameter = parameters[0]; IStatementParameter parameter = parameters[0];
if (pipe.transport instanceof PipeTransportItems) { if (pipe.transport instanceof PipeTransportItems) {
PipeTransportItems transportItems = (PipeTransportItems) pipe.transport; PipeTransportItems transportItems = (PipeTransportItems) pipe.transport;

View file

@ -11,7 +11,7 @@ package buildcraft.transport.statements;
import java.util.Locale; import java.util.Locale;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.api.transport.PipeWire; import buildcraft.api.transport.PipeWire;
import buildcraft.core.statements.BCTrigger; import buildcraft.core.statements.BCTrigger;
import buildcraft.core.statements.StatementIconProvider; import buildcraft.core.statements.StatementIconProvider;
@ -42,7 +42,7 @@ public class TriggerPipeSignal extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
Pipe<?> pipe = (Pipe<?>) gate.getPipe(); Pipe<?> pipe = (Pipe<?>) gate.getPipe();
if (active) { if (active) {
@ -55,7 +55,7 @@ public class TriggerPipeSignal extends BCTrigger {
} }
} }
for (ITriggerParameter param : parameters) { for (IStatementParameter param : parameters) {
if (param != null) { if (param != null) {
TriggerParameterSignal signal = (TriggerParameterSignal) param; TriggerParameterSignal signal = (TriggerParameterSignal) param;
@ -106,7 +106,7 @@ public class TriggerPipeSignal extends BCTrigger {
} }
@Override @Override
public ITriggerParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
return new TriggerParameterSignal(); return new TriggerParameterSignal();
} }
} }

View file

@ -12,7 +12,7 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import buildcraft.api.gates.IGate; import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter; import buildcraft.api.gates.IStatementParameter;
import buildcraft.core.statements.BCTrigger; import buildcraft.core.statements.BCTrigger;
import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly; import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly;
import buildcraft.core.utils.StringUtils; import buildcraft.core.utils.StringUtils;
@ -34,7 +34,7 @@ public class TriggerRedstoneFaderInput extends BCTrigger {
} }
@Override @Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) { public boolean isTriggerActive(IGate gate, IStatementParameter[] parameters) {
TileGenericPipe tile = (TileGenericPipe) gate.getPipe().getTile(); TileGenericPipe tile = (TileGenericPipe) gate.getPipe().getTile();
int inputLevel = tile.redstoneInput; int inputLevel = tile.redstoneInput;
if (parameters.length > 0 && parameters[0] instanceof StatementParameterRedstoneGateSideOnly && if (parameters.length > 0 && parameters[0] instanceof StatementParameterRedstoneGateSideOnly &&
@ -52,8 +52,8 @@ public class TriggerRedstoneFaderInput extends BCTrigger {
} }
@Override @Override
public ITriggerParameter createParameter(int index) { public IStatementParameter createParameter(int index) {
ITriggerParameter param = null; IStatementParameter param = null;
if (index == 0) { if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly(); param = new StatementParameterRedstoneGateSideOnly();