diff options
author | Shawn Buckley <shawntbuckley@gmail.com> | 2015-10-18 23:04:39 -0400 |
---|---|---|
committer | Shawn Buckley <shawntbuckley@gmail.com> | 2015-10-18 23:04:39 -0400 |
commit | 85c804fa112fd1f19c91e45d150a787cfbf0f7a8 (patch) | |
tree | cb302d8e0f46e06be0b1d391317578b165aec245 /src/main/java/gregtech/common/redstonecircuits | |
parent | ce25063b910bb3bdd2b0c234b185fc4077caebdb (diff) | |
download | GT5-Unofficial-85c804fa112fd1f19c91e45d150a787cfbf0f7a8.tar.gz GT5-Unofficial-85c804fa112fd1f19c91e45d150a787cfbf0f7a8.tar.bz2 GT5-Unofficial-85c804fa112fd1f19c91e45d150a787cfbf0f7a8.zip |
Move source directory
Diffstat (limited to 'src/main/java/gregtech/common/redstonecircuits')
9 files changed, 883 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_BasicLogic.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_BasicLogic.java new file mode 100644 index 0000000000..30d06a2e6b --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_BasicLogic.java @@ -0,0 +1,107 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_BasicLogic
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_BasicLogic(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 0) {
+ aCircuitData[0] = 0;
+ }
+ if (aCircuitData[0] > 13) {
+ aCircuitData[0] = 13;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 2) {
+ aRedstoneCircuitBlock.setRedstone((byte)(aCircuitData[0] % 2 == (getAnyRedstone(aRedstoneCircuitBlock) ? 0 : 1) ? 15 : 0), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 4) {
+ aRedstoneCircuitBlock.setRedstone((byte)(aCircuitData[0] % 2 == (getOneRedstone(aRedstoneCircuitBlock) ? 0 : 1) ? 15 : 0), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 6) {
+ aRedstoneCircuitBlock.setRedstone((byte)(aCircuitData[0] % 2 == (getAllRedstone(aRedstoneCircuitBlock) ? 0 : 1) ? 15 : 0), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 7) {
+ aRedstoneCircuitBlock.setRedstone((byte)(15 - getStrongestRedstone(aRedstoneCircuitBlock)), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 9) {
+ aRedstoneCircuitBlock.setRedstone((byte)((aCircuitData[0] % 2 == 0 ? 15 : 0) ^ (getStrongestRedstone(aRedstoneCircuitBlock) | getWeakestRedstone(aRedstoneCircuitBlock))), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 11) {
+ aRedstoneCircuitBlock.setRedstone((byte)((aCircuitData[0] % 2 == 0 ? 15 : 0) ^ getStrongestRedstone(aRedstoneCircuitBlock) ^ getWeakestRedstone(aRedstoneCircuitBlock)), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 13) {
+ aRedstoneCircuitBlock.setRedstone((byte)((aCircuitData[0] % 2 == 0 ? 15 : 0) ^ getStrongestRedstone(aRedstoneCircuitBlock) & getWeakestRedstone(aRedstoneCircuitBlock)), aRedstoneCircuitBlock.getOutputFacing());
+ } else if (aCircuitData[0] < 14) {
+ aRedstoneCircuitBlock.setRedstone((byte)(getStrongestRedstone(aRedstoneCircuitBlock) ^ 0xF), aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+
+ public String getName()
+ {
+ return "Basic Logic";
+ }
+
+ public String getDescription()
+ {
+ return "Regular Logic Gates";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex == 0) {
+ switch (aCircuitData[0])
+ {
+ case 0:
+ return "OR";
+ case 1:
+ return "NOR";
+ case 2:
+ return "XOR";
+ case 3:
+ return "XNOR";
+ case 4:
+ return "AND";
+ case 5:
+ return "NAND";
+ case 6:
+ return "INVERT";
+ case 7:
+ return "BIT_OR";
+ case 8:
+ return "BIT_NOR";
+ case 9:
+ return "BIT_XOR";
+ case 10:
+ return "BIT_XNOR";
+ case 11:
+ return "BIT_AND";
+ case 12:
+ return "BIT_NAND";
+ case 13:
+ return "BIT_INVERT";
+ }
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ return "";
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_BitAnd.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_BitAnd.java new file mode 100644 index 0000000000..ad62f847dc --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_BitAnd.java @@ -0,0 +1,79 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_BitAnd
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_BitAnd(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 0;
+ aCircuitData[1] = 0;
+ aCircuitData[2] = 0;
+ aCircuitData[3] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 0) {
+ aCircuitData[0] = 0;
+ }
+ if (aCircuitData[1] < 0) {
+ aCircuitData[1] = 0;
+ }
+ if (aCircuitData[2] < 0) {
+ aCircuitData[2] = 0;
+ }
+ if (aCircuitData[3] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[0] > 1) {
+ aCircuitData[0] = 1;
+ }
+ if (aCircuitData[1] > 1) {
+ aCircuitData[1] = 1;
+ }
+ if (aCircuitData[2] > 1) {
+ aCircuitData[2] = 1;
+ }
+ if (aCircuitData[3] > 1) {
+ aCircuitData[3] = 1;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)((getStrongestRedstone(aRedstoneCircuitBlock) & (aCircuitData[0] | aCircuitData[1] << 1 | aCircuitData[2] << 2 | aCircuitData[3] << 3)) != 0 ? 15 : 0), aRedstoneCircuitBlock.getOutputFacing());
+ }
+
+ public String getName()
+ {
+ return "Hardcode Bit-AND";
+ }
+
+ public String getDescription()
+ {
+ return "( signal & this ) != 0";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ return "Bit " + aCircuitDataIndex + ":";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ return aCircuitData[aCircuitDataIndex] == 0 ? "OFF" : "ON";
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_CombinationLock.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_CombinationLock.java new file mode 100644 index 0000000000..4f6e2ef9c0 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_CombinationLock.java @@ -0,0 +1,117 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_CombinationLock
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_CombinationLock(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 1;
+ aCircuitData[1] = 0;
+ aCircuitData[2] = 0;
+ aCircuitData[3] = 0;
+ aCircuitData[4] = 0;
+ aCircuitData[5] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 1) {
+ aCircuitData[0] = 1;
+ }
+ if (aCircuitData[1] < 0) {
+ aCircuitData[1] = 0;
+ }
+ if (aCircuitData[2] < 0) {
+ aCircuitData[2] = 0;
+ }
+ if (aCircuitData[3] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[0] > 15) {
+ aCircuitData[0] = 15;
+ }
+ if (aCircuitData[1] > 15) {
+ aCircuitData[1] = 15;
+ }
+ if (aCircuitData[2] > 15) {
+ aCircuitData[2] = 15;
+ }
+ if (aCircuitData[3] > 15) {
+ aCircuitData[3] = 15;
+ }
+ if (aCircuitData[4] < 0) {
+ aCircuitData[4] = 0;
+ }
+ if (aCircuitData[4] > 3) {
+ aCircuitData[4] = 3;
+ }
+ if (aCircuitData[5] < 0) {
+ aCircuitData[5] = 0;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ while ((aCircuitData[aCircuitData[4]] == 0) && (aCircuitData[4] < 4)) {
+ aCircuitData[4] += 1;
+ }
+ if (aCircuitData[4] < 4)
+ {
+ int tRedstone = getStrongestRedstone(aRedstoneCircuitBlock);
+ if (tRedstone > 0)
+ {
+ if (aCircuitData[5] == 0) {
+ if (tRedstone == aCircuitData[aCircuitData[4]]) {
+ aCircuitData[4] += 1;
+ } else {
+ aCircuitData[4] = 0;
+ }
+ }
+ aCircuitData[5] = 1;
+ }
+ else
+ {
+ aCircuitData[5] = 0;
+ }
+ aRedstoneCircuitBlock.setRedstone((byte)0, aRedstoneCircuitBlock.getOutputFacing());
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)15, aRedstoneCircuitBlock.getOutputFacing());
+ aCircuitData[4] = 0;
+ }
+ }
+
+ public String getName()
+ {
+ return "Combination Lock";
+ }
+
+ public String getDescription()
+ {
+ return "Checks Combinations";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ return "Power " + aCircuitDataIndex;
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ return null;
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Equals.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Equals.java new file mode 100644 index 0000000000..acfcab6a14 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Equals.java @@ -0,0 +1,75 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_Equals
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_Equals(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 0;
+ aCircuitData[1] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 0) {
+ aCircuitData[0] = 0;
+ }
+ if (aCircuitData[0] > 15) {
+ aCircuitData[0] = 15;
+ }
+ if (aCircuitData[1] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[1] > 1) {
+ aCircuitData[3] = 1;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aRedstoneCircuitBlock.setRedstone(((byte)((aCircuitData[1] != 0 ? getStrongestRedstone(aRedstoneCircuitBlock) == aCircuitData[0] : getStrongestRedstone(aRedstoneCircuitBlock) != aCircuitData[0]) ? 0 : 15)), aRedstoneCircuitBlock.getOutputFacing());
+}
+
+ public String getName()
+ {
+ return "Equals";
+ }
+
+ public String getDescription()
+ {
+ return "signal == this";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Signal";
+ case 1:
+ return aCircuitData[1] == 0 ? "Equal" : "Unequal";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex > 0) {
+ return "";
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Pulser.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Pulser.java new file mode 100644 index 0000000000..6c02f8e575 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Pulser.java @@ -0,0 +1,93 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_Pulser
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_Pulser(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 1;
+ aCircuitData[1] = 16;
+ aCircuitData[4] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 1) {
+ aCircuitData[0] = 1;
+ }
+ if (aCircuitData[1] < 0) {
+ aCircuitData[1] = 0;
+ }
+ if (aCircuitData[1] > 16) {
+ aCircuitData[1] = 16;
+ }
+ if (aCircuitData[4] < 0) {
+ aCircuitData[4] = 0;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ byte tRedstone = aCircuitData[1] == 0 ? getWeakestNonZeroRedstone(aRedstoneCircuitBlock) : getStrongestRedstone(aRedstoneCircuitBlock);
+ if (aCircuitData[4] == 0) {
+ aCircuitData[5] = tRedstone;
+ }
+ if ((tRedstone > 0) || (aCircuitData[4] > 0))
+ {
+ int tmp40_39 = 4; int[] tmp40_38 = aCircuitData; int tmp42_41 = tmp40_38[tmp40_39];tmp40_38[tmp40_39] = (tmp42_41 + 1);
+ if ((tmp42_41 >= aCircuitData[0]) && (tRedstone <= 0)) {
+ aCircuitData[4] = 0;
+ }
+ }
+ aRedstoneCircuitBlock.setRedstone((byte)((aCircuitData[4] > 0) && (aCircuitData[4] <= aCircuitData[0]) ? (byte)aCircuitData[1] : (aCircuitData[1] <= 0) || (aCircuitData[1] > 15) ? (byte)aCircuitData[5] : 0), aRedstoneCircuitBlock.getOutputFacing());
+ }
+
+ public String getName()
+ {
+ return "Pulser";
+ }
+
+ public String getDescription()
+ {
+ return "Limits&Enlengths";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Length";
+ case 1:
+ return "RS Out";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex == 1)
+ {
+ if (aCircuitData[aCircuitDataIndex] == 16) {
+ return "HIGHEST";
+ }
+ if (aCircuitData[aCircuitDataIndex] == 0) {
+ return "LOWEST";
+ }
+ }
+ return aCircuitDataIndex > 1 ? "" : null;
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Randomizer.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Randomizer.java new file mode 100644 index 0000000000..036485bc22 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Randomizer.java @@ -0,0 +1,94 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_Randomizer
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_Randomizer(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 1;
+ aCircuitData[4] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 1) {
+ aCircuitData[0] = 1;
+ }
+ if (aCircuitData[3] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[3] > 1) {
+ aCircuitData[3] = 1;
+ }
+ if (aCircuitData[4] < 0) {
+ aCircuitData[4] = 0;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[3] == 1)
+ {
+ if (getAnyRedstone(aRedstoneCircuitBlock)) {
+ aCircuitData[4] += 1;
+ } else {
+ aCircuitData[4] = 0;
+ }
+ }
+ else if (getAnyRedstone(aRedstoneCircuitBlock)) {
+ aCircuitData[4] = 0;
+ } else {
+ aCircuitData[4] += 1;
+ }
+ if (aCircuitData[4] >= aCircuitData[0])
+ {
+ aCircuitData[4] = 0;
+ aRedstoneCircuitBlock.setRedstone((byte)aRedstoneCircuitBlock.getRandom(16), aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+
+ public String getName()
+ {
+ return "Randomizer";
+ }
+
+ public String getDescription()
+ {
+ return "Randomizes Redstone";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Delay";
+ case 3:
+ return aCircuitData[aCircuitDataIndex] == 1 ? "RS => ON" : "RS => OFF";
+ case 4:
+ return "Status";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex != 0) {
+ return "";
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_RedstoneMeter.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_RedstoneMeter.java new file mode 100644 index 0000000000..0cb8d09760 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_RedstoneMeter.java @@ -0,0 +1,97 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_RedstoneMeter
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_RedstoneMeter(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 1;
+ aCircuitData[1] = 15;
+ aCircuitData[2] = 0;
+ aCircuitData[3] = 15;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 0) {
+ aCircuitData[0] = 0;
+ }
+ if (aCircuitData[0] > 15) {
+ aCircuitData[0] = 15;
+ }
+ if (aCircuitData[1] < 0) {
+ aCircuitData[1] = 0;
+ }
+ if (aCircuitData[1] > 15) {
+ aCircuitData[1] = 15;
+ }
+ if (aCircuitData[1] < aCircuitData[0]) {
+ aCircuitData[1] = aCircuitData[0];
+ }
+ if (aCircuitData[2] < 0) {
+ aCircuitData[2] = 0;
+ }
+ if (aCircuitData[2] > 1) {
+ aCircuitData[2] = 1;
+ }
+ if (aCircuitData[3] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[3] > 15) {
+ aCircuitData[3] = 15;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ byte tRedstone = getStrongestRedstone(aRedstoneCircuitBlock);
+ aRedstoneCircuitBlock.setRedstone((byte)(((tRedstone >= aCircuitData[0]) && (tRedstone <= aCircuitData[1]) ? 1 : 0) != (aCircuitData[2] != 0 ? 1 : 0) ? (byte)aCircuitData[3] : 0), aRedstoneCircuitBlock.getOutputFacing());
+ }
+
+ public String getName()
+ {
+ return "Redstone Meter";
+ }
+
+ public String getDescription()
+ {
+ return "Checks Boundaries";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Lower";
+ case 1:
+ return "Upper";
+ case 2:
+ return "Invert:";
+ case 3:
+ return "RS Out:";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex == 2) {
+ return aCircuitData[2] == 0 ? "OFF" : "ON";
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Repeater.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Repeater.java new file mode 100644 index 0000000000..ba96272d00 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Repeater.java @@ -0,0 +1,97 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_Repeater
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_Repeater(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 1;
+ aCircuitData[4] = 0;
+ aCircuitData[5] = -1;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 1) {
+ aCircuitData[0] = 1;
+ }
+ if (aCircuitData[4] < 0) {
+ aCircuitData[4] = 0;
+ }
+ if (aCircuitData[5] < -1) {
+ aCircuitData[5] = -1;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (getAnyRedstone(aRedstoneCircuitBlock))
+ {
+ aCircuitData[4] += 1;
+ if (aCircuitData[5] < 0) {
+ aCircuitData[5] = 0;
+ }
+ }
+ if ((aCircuitData[5] >= 0) && (aCircuitData[5] < aCircuitData[0])) {
+ aCircuitData[5] += 1;
+ }
+ if (aCircuitData[4] > 0)
+ {
+ if (aCircuitData[5] >= aCircuitData[0])
+ {
+ aCircuitData[4] -= 1;
+ aRedstoneCircuitBlock.setRedstone((byte)15, aRedstoneCircuitBlock.getOutputFacing());
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)0, aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)0, aRedstoneCircuitBlock.getOutputFacing());
+ aCircuitData[5] = -1;
+ }
+ }
+
+ public String getName()
+ {
+ return "Repeater";
+ }
+
+ public String getDescription()
+ {
+ return "Delays RS-Signal";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Delay";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex > 0) {
+ return "";
+ }
+ return null;
+ }
+}
diff --git a/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java new file mode 100644 index 0000000000..ef450cc7c2 --- /dev/null +++ b/src/main/java/gregtech/common/redstonecircuits/GT_Circuit_Timer.java @@ -0,0 +1,124 @@ +package gregtech.common.redstonecircuits;
+
+import gregtech.api.interfaces.IRedstoneCircuitBlock;
+import gregtech.api.util.GT_CircuitryBehavior;
+
+public class GT_Circuit_Timer
+ extends GT_CircuitryBehavior
+{
+ public GT_Circuit_Timer(int aIndex)
+ {
+ super(aIndex);
+ }
+
+ public void initParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ aCircuitData[0] = 2;
+ aCircuitData[1] = 1;
+ aCircuitData[2] = 2;
+ aCircuitData[4] = 0;
+ }
+
+ public void validateParameters(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[0] < 2) {
+ aCircuitData[0] = 2;
+ }
+ if (aCircuitData[1] < 1) {
+ aCircuitData[1] = 1;
+ }
+ if (aCircuitData[2] < 2) {
+ aCircuitData[2] = 2;
+ }
+ if (aCircuitData[3] < 0) {
+ aCircuitData[3] = 0;
+ }
+ if (aCircuitData[3] > 1) {
+ aCircuitData[3] = 1;
+ }
+ if (aCircuitData[4] < 0) {
+ aCircuitData[4] = 0;
+ }
+ }
+
+ public void onTick(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock)
+ {
+ if (aCircuitData[3] == 1)
+ {
+ if (getAnyRedstone(aRedstoneCircuitBlock)) {
+ aCircuitData[4] += 1;
+ } else {
+ aCircuitData[4] = 0;
+ }
+ }
+ else if (getAnyRedstone(aRedstoneCircuitBlock)) {
+ aCircuitData[4] = 0;
+ } else {
+ aCircuitData[4] += 1;
+ }
+ if (aCircuitData[4] >= aCircuitData[0])
+ {
+ if (aCircuitData[1] > 1)
+ {
+ if (aCircuitData[4] >= aCircuitData[0] + (aCircuitData[1] - 1) * aCircuitData[2])
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)15, aRedstoneCircuitBlock.getOutputFacing());
+ aCircuitData[4] = 0;
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)((aCircuitData[4] - aCircuitData[0]) % aCircuitData[2] == 0 ? 15 : 0), aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+ else
+ {
+ aRedstoneCircuitBlock.setRedstone((byte)15, aRedstoneCircuitBlock.getOutputFacing());
+ aCircuitData[4] = 0;
+ }
+ }
+ else {
+ aRedstoneCircuitBlock.setRedstone((byte)0, aRedstoneCircuitBlock.getOutputFacing());
+ }
+ }
+
+ public String getName()
+ {
+ return "Timer";
+ }
+
+ public String getDescription()
+ {
+ return "Pulses Redstone";
+ }
+
+ public String getDataDescription(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ switch (aCircuitDataIndex)
+ {
+ case 0:
+ return "Delay";
+ case 1:
+ return "Pulses";
+ case 2:
+ return "Length";
+ case 3:
+ return aCircuitData[aCircuitDataIndex] == 1 ? "RS => ON" : "RS => OFF";
+ case 4:
+ return "Time";
+ }
+ return "";
+ }
+
+ public boolean displayItemStack(int[] aCircuitData, IRedstoneCircuitBlock aRedstoneCircuitBlock, int aIndex)
+ {
+ return false;
+ }
+
+ public String getDataDisplay(int[] aCircuitData, int aCircuitDataIndex)
+ {
+ if (aCircuitDataIndex == 3) {
+ return "";
+ }
+ return null;
+ }
+}
|