| package cofh.api.tileentity; |
| |
| /** |
| * Implement this interface on Tile Entities which have Redstone Control functionality. This means that a tile can be set to ignore redstone entirely, or |
| * respond to a low or high redstone state. |
| * |
| * @author King Lemming |
| * |
| */ |
| public interface IRedstoneControl extends IRedstoneCache { |
| |
| public static enum ControlMode { |
| DISABLED(true), LOW(false), HIGH(true); |
| |
| private final boolean state; |
| |
| private ControlMode(boolean state) { |
| |
| this.state = state; |
| } |
| |
| public boolean isDisabled() { |
| |
| return this == DISABLED; |
| } |
| |
| public boolean isLow() { |
| |
| return this == LOW; |
| } |
| |
| public boolean isHigh() { |
| |
| return this == HIGH; |
| } |
| |
| public boolean getState() { |
| |
| return state; |
| } |
| |
| public static ControlMode stepForward(ControlMode curControl) { |
| |
| return curControl == DISABLED ? LOW : curControl == HIGH ? DISABLED : HIGH; |
| } |
| |
| public static ControlMode stepBackward(ControlMode curControl) { |
| |
| return curControl == DISABLED ? HIGH : curControl == HIGH ? LOW : DISABLED; |
| } |
| } |
| |
| void setControl(ControlMode control); |
| |
| ControlMode getControl(); |
| |
| } |