added mouse button and description to statement parameters, added sided redstone I/O support

This commit is contained in:
asiekierka 2014-10-26 17:56:18 +01:00
parent c1c475fc65
commit 9ddcb5cce4
24 changed files with 262 additions and 62 deletions

View file

@ -11,7 +11,6 @@ package buildcraft.api.gates;
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;
@ -31,7 +30,7 @@ public class ActionParameterItemStack implements IActionParameter {
}
@Override
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack) {
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) {
if (stack != null) {
this.stack = stack.copy();
this.stack.stackSize = 1;
@ -63,4 +62,9 @@ public class ActionParameterItemStack implements IActionParameter {
return false;
}
}
@Override
public String getDescription() {
return stack.getDisplayName();
}
}

View file

@ -19,8 +19,10 @@ public interface IStatementParameter {
ItemStack getItemStackToDraw();
IIcon getIconToDraw();
String getDescription();
void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack);
void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton);
void writeToNBT(NBTTagCompound compound);

View file

@ -12,7 +12,6 @@ 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;
@ -32,7 +31,7 @@ public class TriggerParameterItemStack implements ITriggerParameter {
}
@Override
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack) {
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) {
if (stack != null) {
this.stack = stack.copy();
this.stack.stackSize = 1;
@ -60,4 +59,8 @@ public class TriggerParameterItemStack implements ITriggerParameter {
stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("stack"));
}
@Override
public String getDescription() {
return stack.getDisplayName();
}
}

View file

@ -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.0", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|gates")
@API(apiVersion = "2.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|gates")
package buildcraft.api.gates;
import cpw.mods.fml.common.API;

View file

@ -96,11 +96,13 @@ import buildcraft.core.recipes.RefineryRecipeManager;
import buildcraft.core.render.BlockHighlightHandler;
import buildcraft.core.robots.EntityRobot;
import buildcraft.core.statements.ActionMachineControl;
import buildcraft.core.statements.ActionMachineControl.Mode;
import buildcraft.core.statements.ActionRedstoneOutput;
import buildcraft.core.statements.DefaultActionProvider;
import buildcraft.core.statements.DefaultTriggerProvider;
import buildcraft.core.statements.StatementIconProvider;
import buildcraft.core.statements.StatementParameterDirection;
import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly;
import buildcraft.core.statements.TriggerEnergy;
import buildcraft.core.statements.TriggerFluidContainer;
import buildcraft.core.statements.TriggerFluidContainerLevel;
@ -108,7 +110,6 @@ import buildcraft.core.statements.TriggerInventory;
import buildcraft.core.statements.TriggerInventoryLevel;
import buildcraft.core.statements.TriggerMachine;
import buildcraft.core.statements.TriggerRedstoneInput;
import buildcraft.core.statements.ActionMachineControl.Mode;
import buildcraft.core.utils.ColorUtils;
import buildcraft.core.utils.CraftingHandler;
import buildcraft.core.utils.WorldPropertyIsDirt;
@ -345,6 +346,7 @@ public class BuildCraftCore extends BuildCraftMod {
StatementManager.registerParameterClass("buildcraft:stackTrigger", TriggerParameterItemStack.class);
StatementManager.registerParameterClass("buildcraft:stackAction", ActionParameterItemStack.class);
StatementManager.registerParameterClass("buildcraft:pipeActionDirection", StatementParameterDirection.class);
StatementManager.registerParameterClass("buildcraft:redstoneGateSideOnly", StatementParameterRedstoneGateSideOnly.class);
StatementManager.registerTriggerProvider(new DefaultTriggerProvider());
StatementManager.registerActionProvider(new DefaultActionProvider());

View file

@ -129,12 +129,12 @@ import buildcraft.transport.statements.ActionRedstoneFaderOutput;
import buildcraft.transport.statements.ActionSignalOutput;
import buildcraft.transport.statements.ActionSingleEnergyPulse;
import buildcraft.transport.statements.ActionValve;
import buildcraft.transport.statements.ActionValve.ValveState;
import buildcraft.transport.statements.TriggerClockTimer;
import buildcraft.transport.statements.TriggerParameterSignal;
import buildcraft.transport.statements.TriggerPipeContents;
import buildcraft.transport.statements.TriggerPipeSignal;
import buildcraft.transport.statements.TriggerRedstoneFaderInput;
import buildcraft.transport.statements.ActionValve.ValveState;
import buildcraft.transport.statements.TriggerClockTimer.Time;
import buildcraft.transport.statements.TriggerPipeContents.PipeContents;
import buildcraft.transport.stripes.StripesHandlerArrow;
@ -469,12 +469,6 @@ public class BuildCraftTransport extends BuildCraftMod {
channels = NetworkRegistry.INSTANCE.newChannel
(DefaultProps.NET_CHANNEL_NAME + "-TRANSPORT", new BuildCraftChannelHandler(), new PacketHandlerTransport());
// Register connection handler
// MinecraftForge.registerConnectionHandler(new ConnectionHandler());
// Register GUI handler
// MinecraftForge.setGuiHandler(mod_BuildCraftTransport.instance, new GuiHandler());
TransportProxy.proxy.registerTileEntities();
BuilderAPI.schematicRegistry.registerSchematicBlock(genericPipeBlock, SchematicPipe.class);

View file

@ -55,7 +55,7 @@ public final class HeuristicBlockDetection {
} else {
SchematicRegistry.INSTANCE.registerSchematicBlock(block, meta, SchematicBlockCreative.class);
}
} catch(Exception e) {
} catch (Exception e) {
e.printStackTrace();
}
}

View file

@ -41,13 +41,9 @@ public class SchematicRail extends SchematicBlock {
break;
case 6:
meta = 7;
break;
case 7:
meta = 8;
break;
case 8:
meta = 9;
meta++;
break;
case 9:
meta = 6;

View file

@ -95,7 +95,7 @@ public final class SchematicRegistry implements ISchematicRegistry {
}
public void registerSchematicBlock(Block block, int meta, Class<? extends Schematic> clazz, Object... params) {
if (block == null || Block.blockRegistry.getNameForObject(block) == null || Block.blockRegistry.getNameForObject(block).equals("null")) {
if (block == null || Block.blockRegistry.getNameForObject(block) == null || "null".equals(Block.blockRegistry.getNameForObject(block))) {
BCLog.logger.warn("Mod tried to register block with null name! Ignoring.");
return;
}

View file

@ -77,7 +77,7 @@ public class RenderRobot extends Render implements IItemRenderer {
try {
renderManager.renderEngine.bindTexture(robot.getTexture());
} catch(Exception e) {
} catch (Exception e) {
e.printStackTrace();
// TODO: Figure out why the NPE inside Minecraft happens.
GL11.glEnable(GL11.GL_LIGHTING);

View file

@ -8,6 +8,7 @@
*/
package buildcraft.core.statements;
import buildcraft.api.gates.IActionParameter;
public class ActionRedstoneOutput extends BCActionPassive {
@ -24,4 +25,20 @@ public class ActionRedstoneOutput extends BCActionPassive {
public int getIconIndex() {
return StatementIconProvider.Trigger_RedstoneInput_Active;
}
@Override
public IActionParameter createParameter(int index) {
IActionParameter param = null;
if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly();
}
return param;
}
@Override
public int maxParameters() {
return 1;
}
}

View file

@ -69,9 +69,9 @@ public final class StatementIconProvider implements IIconProvider {
public static final int Action_Parameter_Direction_South = 42;
public static final int Action_Parameter_Direction_West = 43;
public static final int Action_Parameter_Direction_East = 44;
public static final int Action_Parameter_RedstoneGateSideOnly = 45;
public static final int MAX = 45;
public static final int MAX = 46;
@SideOnly(Side.CLIENT)
private final IIcon[] icons = new IIcon[MAX];
@ -135,5 +135,7 @@ public final class StatementIconProvider implements IIconProvider {
icons[StatementIconProvider.Action_Parameter_Direction_South] = iconRegister.registerIcon("buildcraft:triggers/trigger_dir_south");
icons[StatementIconProvider.Action_Parameter_Direction_West] = iconRegister.registerIcon("buildcraft:triggers/trigger_dir_west");
icons[StatementIconProvider.Action_Parameter_Direction_East] = iconRegister.registerIcon("buildcraft:triggers/trigger_dir_east");
icons[StatementIconProvider.Action_Parameter_RedstoneGateSideOnly] = iconRegister.registerIcon("buildcraft:triggers/redstone_gate_side_only");
}
}

View file

@ -17,6 +17,7 @@ import buildcraft.api.gates.IActionParameter;
import buildcraft.api.gates.IStatement;
import buildcraft.api.gates.ITriggerParameter;
import buildcraft.api.transport.IPipeTile;
import buildcraft.core.utils.StringUtils;
public class StatementParameterDirection implements IActionParameter, ITriggerParameter {
@ -42,9 +43,9 @@ public class StatementParameterDirection implements IActionParameter, ITriggerPa
}
@Override
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack) {
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) {
do {
direction = ForgeDirection.getOrientation((direction.ordinal() + 1) % 6);
direction = ForgeDirection.getOrientation((direction.ordinal() + (mouseButton > 0 ? -1 : 1)) % 6);
} while (!pipe.isPipeConnected(direction));
}
@ -70,4 +71,13 @@ public class StatementParameterDirection implements IActionParameter, ITriggerPa
}
return false;
}
@Override
public String getDescription() {
if (direction == ForgeDirection.UNKNOWN) {
return "";
} else {
return StringUtils.localize("direction." + direction.name().toLowerCase());
}
}
}

View file

@ -0,0 +1,53 @@
package buildcraft.core.statements;
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.ITriggerParameter;
import buildcraft.api.transport.IPipeTile;
import buildcraft.core.utils.StringUtils;
public class StatementParameterRedstoneGateSideOnly implements
IActionParameter, ITriggerParameter {
@NetworkData
public boolean isOn = false;
@Override
public ItemStack getItemStackToDraw() {
return null;
}
@Override
public IIcon getIconToDraw() {
if (!isOn) {
return null;
} else {
return StatementIconProvider.INSTANCE.getIcon(StatementIconProvider.Action_Parameter_RedstoneGateSideOnly);
}
}
@Override
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) {
isOn = !isOn;
}
@Override
public void writeToNBT(NBTTagCompound compound) {
compound.setByte("isOn", isOn ? (byte) 1 : (byte) 0);
}
@Override
public void readFromNBT(NBTTagCompound compound) {
if (compound.hasKey("isOn")) {
isOn = compound.getByte("isOn") == 1;
}
}
@Override
public String getDescription() {
return isOn ? StringUtils.localize("gate.parameter.redstone.gateSideOnly") : "";
}
}

View file

@ -26,12 +26,31 @@ public class TriggerRedstoneInput extends BCTrigger {
public String getDescription() {
return StringUtils.localize("gate.trigger.redstone.input." + (active ? "active" : "inactive"));
}
@Override
public ITriggerParameter createParameter(int index) {
ITriggerParameter param = null;
if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly();
}
return param;
}
@Override
public int maxParameters() {
return 1;
}
@Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) {
TileGenericPipe tile = (TileGenericPipe) gate.getPipe().getTile();
//int level = tile.redstoneInputSide[gate.getSide().ordinal()];
int level = tile.redstoneInput;
if (parameters.length > 0 && parameters[0] instanceof StatementParameterRedstoneGateSideOnly &&
((StatementParameterRedstoneGateSideOnly) parameters[0]).isOn) {
level = tile.redstoneInputSide[gate.getSide().ordinal()];
}
return active ? level > 0 : level == 0;
}

View file

@ -34,7 +34,7 @@ public class WorldPropertyIsOre extends WorldProperty {
}
for (String oreName : OreDictionary.getOreNames()) {
if(oreName.startsWith("ore")) {
if (oreName.startsWith("ore")) {
ArrayList<ItemStack> oreStacks = OreDictionary.getOres(oreName);
if (oreStacks.size() > 0) {
Block block = Block.getBlockFromItem(oreStacks.get(0).getItem());

View file

@ -37,6 +37,7 @@ import buildcraft.api.transport.IPipe;
import buildcraft.api.transport.PipeWire;
import buildcraft.core.GuiIds;
import buildcraft.core.statements.ActionRedstoneOutput;
import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly;
import buildcraft.transport.gates.ActionSlot;
import buildcraft.transport.gates.GateDefinition.GateLogic;
import buildcraft.transport.gates.GateDefinition.GateMaterial;
@ -66,7 +67,8 @@ public final class Gate implements IGate {
public BitSet broadcastSignal = new BitSet(PipeWire.VALUES.length);
public BitSet prevBroadcastSignal = new BitSet(PipeWire.VALUES.length);
public int redstoneOutput = 0;
public int redstoneOutputSide = 0;
/**
* this is the internal pulsing state of the gate. Intended to be managed
* by the server side only, the client is supposed to be referring to the
@ -329,6 +331,10 @@ public final class Gate implements IGate {
return redstoneOutput;
}
public int getSidedRedstoneOutput() {
return redstoneOutputSide;
}
public void startResolution() {
for (GateExpansionController expansion : expansions.values()) {
expansion.startResolution();
@ -338,6 +344,9 @@ public final class Gate implements IGate {
public void resolveActions() {
int oldRedstoneOutput = redstoneOutput;
redstoneOutput = 0;
int oldRedstoneOutputSide = redstoneOutputSide;
redstoneOutputSide = 0;
/* for (ForgeDirection ioSide : ForgeDirection.VALID_DIRECTIONS) {
pipe.transport.allowInput(ioSide, true);
@ -447,10 +456,17 @@ public final class Gate implements IGate {
continue;
}
if (action instanceof ActionRedstoneOutput) {
redstoneOutput = 15;
} else if (action instanceof ActionRedstoneFaderOutput) {
redstoneOutput = ((ActionRedstoneFaderOutput) action).level;
if (action instanceof ActionRedstoneOutput || action instanceof ActionRedstoneFaderOutput) {
if (slot.parameters != null && slot.parameters.length >= 1 &&
slot.parameters[0] instanceof StatementParameterRedstoneGateSideOnly &&
((StatementParameterRedstoneGateSideOnly) slot.parameters[0]).isOn) {
redstoneOutputSide = (action instanceof ActionRedstoneFaderOutput) ? ((ActionRedstoneFaderOutput) action).level : 15;
} else {
redstoneOutput = (action instanceof ActionRedstoneFaderOutput) ? ((ActionRedstoneFaderOutput) action).level : 15;
if (redstoneOutput > redstoneOutputSide) {
redstoneOutputSide = redstoneOutput;
}
}
} else {
for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
TileEntity tile = pipe.container.getTile(side);
@ -464,7 +480,7 @@ public final class Gate implements IGate {
pipe.actionsActivated(activeActions);
if (oldRedstoneOutput != redstoneOutput) {
if (oldRedstoneOutput != redstoneOutput || oldRedstoneOutputSide != redstoneOutputSide) {
pipe.updateNeighbors(true);
}

View file

@ -25,7 +25,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldSettings.GameType;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraftforge.common.util.ForgeDirection;
@ -404,11 +403,14 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
return false;
}
private int getMaxRedstoneOutput() {
public int getMaxRedstoneOutput(ForgeDirection dir) {
int output = 0;
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
output = Math.max(output, getRedstoneOutput(dir));
for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) {
output = Math.max(output, getRedstoneOutput(side));
if (side == dir) {
output = Math.max(output, getRedstoneOutputSide(side));
}
}
return output;
@ -420,6 +422,12 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
return gate != null ? gate.getRedstoneOutput() : 0;
}
private int getRedstoneOutputSide(ForgeDirection dir) {
Gate gate = gates[dir.ordinal()];
return gate != null ? gate.getSidedRedstoneOutput() : 0;
}
public int isPoweringTo(int side) {
ForgeDirection o = ForgeDirection.getOrientation(side).getOpposite();
@ -427,12 +435,8 @@ public abstract class Pipe<T extends PipeTransport> implements IDropControlInven
if (tile instanceof TileGenericPipe && container.isPipeConnected(o)) {
return 0;
/* } else if (tile != null && container.isPipeConnected(o)) {
return getMaxRedstoneOutput();
} else {
return getRedstoneOutput(o); */
} else {
return getMaxRedstoneOutput();
return getMaxRedstoneOutput(o);
}
}

View file

@ -1,12 +1,11 @@
package buildcraft.transport;
import buildcraft.core.utils.ColorUtils;
import net.minecraft.init.Items;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;
import buildcraft.core.utils.ColorUtils;
public class PipeColoringRecipe implements IRecipe {

View file

@ -125,6 +125,17 @@ public class GuiGateInterface extends GuiAdvancedInterface {
return getParameter() != null;
}
@Override
public String getDescription() {
IStatementParameter parameter = getParameter();
if (parameter != null) {
return parameter.getDescription() != null ? parameter.getDescription() : "";
} else {
return null;
}
}
@Override
public ItemStack getItemStack() {
IStatementParameter parameter = getParameter();
@ -463,7 +474,7 @@ public class GuiGateInterface extends GuiAdvancedInterface {
}
if (param != null) {
param.clicked(pipe.container, statement.getStatement(), mc.thePlayer.inventory.getItemStack());
param.clicked(pipe.container, statement.getStatement(), mc.thePlayer.inventory.getItemStack(), k);
paramSlot.setParameter(param, true);
}
}

View file

@ -8,6 +8,8 @@
*/
package buildcraft.transport.statements;
import java.util.Locale;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
@ -17,6 +19,7 @@ import buildcraft.api.gates.IStatement;
import buildcraft.api.transport.IPipeTile;
import buildcraft.api.transport.PipeWire;
import buildcraft.core.statements.StatementIconProvider;
import buildcraft.core.utils.StringUtils;
public class ActionParameterSignal implements IActionParameter {
@ -59,13 +62,13 @@ public class ActionParameterSignal implements IActionParameter {
}
@Override
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack) {
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) {
if (color == null) {
color = PipeWire.RED;
} else if (color == PipeWire.YELLOW) {
color = mouseButton == 0 ? PipeWire.RED : PipeWire.YELLOW;
} else if (color == (mouseButton == 0 ? PipeWire.YELLOW : PipeWire.RED)) {
color = null;
} else {
color = PipeWire.values()[color.ordinal() + 1];
color = PipeWire.values()[mouseButton == 0 ? color.ordinal() + 1 : color.ordinal() - 1];
}
}
@ -93,4 +96,9 @@ public class ActionParameterSignal implements IActionParameter {
return false;
}
}
@Override
public String getDescription() {
return String.format(StringUtils.localize("gate.action.pipe.wire"), StringUtils.localize("color." + color.name().toLowerCase(Locale.ENGLISH)));
}
}

View file

@ -12,7 +12,9 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import buildcraft.api.gates.IActionParameter;
import buildcraft.core.statements.BCActionPassive;
import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly;
import buildcraft.core.utils.StringUtils;
public class ActionRedstoneFaderOutput extends BCActionPassive {
@ -41,4 +43,20 @@ public class ActionRedstoneFaderOutput extends BCActionPassive {
public void registerIcons(IIconRegister iconRegister) {
icon = iconRegister.registerIcon(String.format("buildcraft:triggers/redstone_%02d", level));
}
@Override
public IActionParameter createParameter(int index) {
IActionParameter param = null;
if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly();
}
return param;
}
@Override
public int maxParameters() {
return 1;
}
}

View file

@ -8,6 +8,8 @@
*/
package buildcraft.transport.statements;
import java.util.Locale;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
@ -17,6 +19,7 @@ import buildcraft.api.gates.ITriggerParameter;
import buildcraft.api.transport.IPipeTile;
import buildcraft.api.transport.PipeWire;
import buildcraft.core.statements.StatementIconProvider;
import buildcraft.core.utils.StringUtils;
public class TriggerParameterSignal implements ITriggerParameter {
@ -79,17 +82,31 @@ public class TriggerParameterSignal implements ITriggerParameter {
}
@Override
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack) {
if (color == null) {
active = true;
color = PipeWire.RED;
} else if (active) {
active = false;
} else if (color == PipeWire.YELLOW) {
color = null;
public void clicked(IPipeTile pipe, IStatement stmt, ItemStack stack, int mouseButton) {
if (mouseButton == 0) {
if (color == null) {
active = true;
color = PipeWire.RED;
} else if (active) {
active = false;
} else if (color == PipeWire.YELLOW) {
color = null;
} else {
color = PipeWire.values()[color.ordinal() + 1];
active = true;
}
} else {
color = PipeWire.values()[color.ordinal() + 1];
active = true;
if (color == null) {
active = false;
color = PipeWire.YELLOW;
} else if (!active) {
active = true;
} else if (color == PipeWire.RED) {
color = null;
} else {
color = PipeWire.values()[color.ordinal() - 1];
active = false;
}
}
}
@ -111,4 +128,9 @@ public class TriggerParameterSignal implements ITriggerParameter {
color = PipeWire.values()[nbt.getByte("color")];
}
}
@Override
public String getDescription() {
return String.format(StringUtils.localize("gate.trigger.pipe.wire." + (active ? "active" : "inactive")), StringUtils.localize("color." + color.name().toLowerCase(Locale.ENGLISH)));
}
}

View file

@ -14,6 +14,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import buildcraft.api.gates.IGate;
import buildcraft.api.gates.ITriggerParameter;
import buildcraft.core.statements.BCTrigger;
import buildcraft.core.statements.StatementParameterRedstoneGateSideOnly;
import buildcraft.core.utils.StringUtils;
import buildcraft.transport.TileGenericPipe;
@ -33,10 +34,13 @@ public class TriggerRedstoneFaderInput extends BCTrigger {
}
@Override
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameter) {
public boolean isTriggerActive(IGate gate, ITriggerParameter[] parameters) {
TileGenericPipe tile = (TileGenericPipe) gate.getPipe().getTile();
// int inputLevel = tile.redstoneInputSide[gate.getSide().ordinal()];
int inputLevel = tile.redstoneInput;
if (parameters.length > 0 && parameters[0] instanceof StatementParameterRedstoneGateSideOnly &&
((StatementParameterRedstoneGateSideOnly) parameters[0]).isOn) {
inputLevel = tile.redstoneInputSide[gate.getSide().ordinal()];
}
return inputLevel == level;
}
@ -46,4 +50,20 @@ public class TriggerRedstoneFaderInput extends BCTrigger {
public void registerIcons(IIconRegister iconRegister) {
icon = iconRegister.registerIcon(String.format("buildcraft:triggers/redstone_%02d", level));
}
@Override
public ITriggerParameter createParameter(int index) {
ITriggerParameter param = null;
if (index == 0) {
param = new StatementParameterRedstoneGateSideOnly();
}
return param;
}
@Override
public int maxParameters() {
return 1;
}
}