aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java38
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java8
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Electrolyzer.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_PrecisionLaser.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Recycler.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java102
9 files changed, 81 insertions, 79 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
index b151678e5a..b2db48ee35 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java
@@ -167,7 +167,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
if (outputEM != null) {
float mass = 0;
for (cElementalInstanceStackMap tree : outputEM)
- mass += tree.getMass();
+ if(tree!=null) mass += tree.getMass();
if (mass > 0) {
if (eMufflerHatches.size() < 1) explodeMultiblock();
else {
@@ -205,7 +205,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
if (outputEM != null) {
float mass = 0;
for (cElementalInstanceStackMap tree : outputEM)
- mass += tree.getMass();
+ if(tree!=null) mass += tree.getMass();
if (mass > 0) {
if (eMufflerHatches.size() < 1) explodeMultiblock();
else {
@@ -329,13 +329,14 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
}
if (outputEM != null) {
- aNBT.setInteger("outputStackCount", outputEM.length);
+ aNBT.setInteger("eOutputStackCount", outputEM.length);
NBTTagCompound output = new NBTTagCompound();
for (int i = 0; i < outputEM.length; i++)
- output.setTag(Integer.toString(i), outputEM[i].toNBT());
+ if(outputEM[i]!=null)
+ output.setTag(Integer.toString(i), outputEM[i].toNBT());
aNBT.setTag("outputEM", output);
} else {
- aNBT.setInteger("outputStackCount", 0);
+ aNBT.setInteger("eOutputStackCount", 0);
aNBT.removeTag("outputEM");
}
@@ -400,18 +401,21 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
mOutputFluids[i] = GT_Utility.loadFluid(aNBT, "mOutputFluids" + i);
}
- final int outputLen = aNBT.getInteger("outputStackCount");
+ final int outputLen = aNBT.getInteger("eOutputStackCount");
if (outputLen > 0) {
outputEM = new cElementalInstanceStackMap[outputLen];
- for (int i = 0; i < outputEM.length; i++)
- try {
- outputEM[i] = cElementalInstanceStackMap.fromNBT(
- aNBT.getCompoundTag("outputEM").getCompoundTag(Integer.toString(i)));
- } catch (tElementalException e) {
- if (DEBUG_MODE) e.printStackTrace();
- outputEM[i] = new cElementalInstanceStackMap();
+ NBTTagCompound compound=aNBT.getCompoundTag("outputEM");
+ for (int i = 0; i < outputEM.length; i++) {
+ if (compound.hasKey(Integer.toString(i))) {
+ try {
+ outputEM[i] = cElementalInstanceStackMap.fromNBT(compound.getCompoundTag(Integer.toString(i)));
+ } catch (tElementalException e) {
+ if (DEBUG_MODE) e.printStackTrace();
+ outputEM[i] = null;
+ }
}
- } else outputEM = new cElementalInstanceStackMap[0];
+ }
+ } else outputEM = null;
NBTTagCompound paramI = aNBT.getCompoundTag("eParamsIn");
for (int i = 0; i < iParamsIn.length; i++)
@@ -596,7 +600,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
explodeMultiblock();
if (outputEM != null)
for (cElementalInstanceStackMap tree : outputEM)
- if (tree.hasStacks()) explodeMultiblock();
+ if (tree!=null && tree.hasStacks()) explodeMultiblock();
}
if (eUncertainHatches.size() > 1) mMachine = false;
@@ -1153,7 +1157,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
if (outputEM == null) return;
float mass = 0;
for (cElementalInstanceStackMap map : outputEM)
- mass += map.getMass();
+ if(map!=null) mass += map.getMass();
if (mass > 0) {
if (eMufflerHatches.size() < 1) explodeMultiblock();
@@ -1285,7 +1289,7 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt
explodeMultiblock();
if (outputEM != null)
for (cElementalInstanceStackMap output : outputEM)
- if (output.hasStacks()) explodeMultiblock();
+ if (output!=null && output.hasStacks()) explodeMultiblock();
} catch (Exception e) {
if (DEBUG_MODE) e.printStackTrace();
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java
index daa5c7568b..930d81a21f 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java
@@ -6,9 +6,9 @@ package com.github.technus.tectech.thing.metaTileEntity.multi.base;
public class MultiblockControl<T>{
private final int[] controls=new int[7];
- private final T[] values;
+ private final T values;
- public MultiblockControl(T[] values, int EUt, int amperes, int requiredData, int effIncrease, int maxProgressTime){
+ public MultiblockControl(T values, int EUt, int amperes, int requiredData, int effIncrease, int maxProgressTime){
this.values = values;
controls[0]=EUt;
controls[1]=amperes;
@@ -19,7 +19,7 @@ public class MultiblockControl<T>{
controls[6]=Float.floatToIntBits(0);
}
- public MultiblockControl(T[] values, int EUt, int amperes, int requiredData, int effIncrease, int maxProgressTime, int pollutionToAdd, float excessMass){
+ public MultiblockControl(T values, int EUt, int amperes, int requiredData, int effIncrease, int maxProgressTime, int pollutionToAdd, float excessMass){
this.values = values;
controls[0]=EUt;
controls[1]=amperes;
@@ -30,7 +30,7 @@ public class MultiblockControl<T>{
controls[6]=Float.floatToIntBits(excessMass);
}
- public T[] getValues() {
+ public T getValue() {
return values;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
index 91ef19744b..da81932189 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
@@ -18,7 +18,7 @@ public class Behaviour_Centrifuge extends GT_MetaTileEntity_EM_machine.Behaviour
}
@Override
- public MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
+ public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
return null;
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Electrolyzer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Electrolyzer.java
index c6b9306b94..fccca17ddc 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Electrolyzer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Electrolyzer.java
@@ -18,7 +18,7 @@ public class Behaviour_Electrolyzer extends GT_MetaTileEntity_EM_machine.Behavio
}
@Override
- public MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
+ public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
return null;
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java
index 7a2ed9ffcf..26e9cacbf2 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_ElectromagneticSeparator.java
@@ -18,7 +18,7 @@ public class Behaviour_ElectromagneticSeparator extends GT_MetaTileEntity_EM_mac
}
@Override
- public MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
+ public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
return null;
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java
index 29d9c4a081..50acb59a85 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Mixer.java
@@ -18,7 +18,7 @@ public class Behaviour_Mixer extends GT_MetaTileEntity_EM_machine.Behaviour {
}
@Override
- public MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
+ public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
return null;
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_PrecisionLaser.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_PrecisionLaser.java
index 0365f436c3..8a003e35b0 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_PrecisionLaser.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_PrecisionLaser.java
@@ -18,7 +18,7 @@ public class Behaviour_PrecisionLaser extends GT_MetaTileEntity_EM_machine.Behav
}
@Override
- public MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
+ public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
return null;
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Recycler.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Recycler.java
index e0fc30b469..7b922521d0 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Recycler.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Recycler.java
@@ -18,7 +18,7 @@ public class Behaviour_Recycler extends GT_MetaTileEntity_EM_machine.Behaviour {
}
@Override
- public MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
+ public MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters) {
return null;
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java
index 3a2a54ddb6..3de4bed480 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/GT_MetaTileEntity_EM_machine.java
@@ -4,8 +4,6 @@ import com.github.technus.tectech.CommonValues;
import com.github.technus.tectech.elementalMatter.core.cElementalInstanceStackMap;
import com.github.technus.tectech.thing.block.QuantumGlassBlock;
import com.github.technus.tectech.thing.metaTileEntity.IConstructable;
-import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputElemental;
-import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_OutputElemental;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.MultiblockControl;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -16,6 +14,7 @@ import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
+import java.util.BitSet;
import java.util.HashMap;
import static com.github.technus.tectech.Util.StructureBuilder;
@@ -113,15 +112,12 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
if(pointer>=0 && pointer<eInputHatches.size()) handles[4]=eInputHatches.get(pointer).getContainerHandler();
pointer= getParameterInInt(6,1)-1;
if(pointer>=0 && pointer<eInputHatches.size()) handles[5]=eInputHatches.get(pointer).getContainerHandler();
+ for(int i=0;i<5;i++) for(int j=i+1;j<6;j++) if (handles[i]!=null && handles[j]!=null && handles[i]==handles[j]) return false;
- MultiblockControl<cElementalInstanceStackMap> control=currentBehaviour.process(handles,parameters);
+ MultiblockControl<cElementalInstanceStackMap[]> control=currentBehaviour.process(handles,parameters);
if(control==null) return false;
//update other pare
- outputEM=control.getValues();
- cElementalInstanceStackMap nullFix=new cElementalInstanceStackMap();
- for(int i=0;i<outputEM.length;i++){
- if(outputEM[i]==null) outputEM[i]=nullFix;
- }
+ outputEM=control.getValue();
mEUt=control.getEUT();
eAmpereFlow=control.getAmperage();
mMaxProgresstime=control.getMaxProgressTime();
@@ -164,50 +160,52 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
@Override
public void parametersOutAndStatusesWrite_EM(boolean machineBusy) {
- double pointer;
- for (int i = 4; i <= 6; i++) {
- pointer= getParameterInInt(i,0);
- if(Double.isNaN(pointer))
- setStatusOfParameterIn(i,0,STATUS_WRONG);
- else if(pointer<0)
- setStatusOfParameterIn(i,0,STATUS_TOO_LOW);
- else if(pointer==0)
- setStatusOfParameterIn(i,0,STATUS_LOW);
- else if(pointer<=eInputHatches.size())
- setStatusOfParameterIn(i,0,STATUS_OK);
- else setStatusOfParameterIn(i,0,STATUS_TOO_HIGH);
- pointer= getParameterInInt(i,1);
- if(Double.isNaN(pointer))
- setStatusOfParameterIn(i,1,STATUS_WRONG);
- else if(pointer<0)
- setStatusOfParameterIn(i,1,STATUS_TOO_LOW);
- else if(pointer==0)
- setStatusOfParameterIn(i,1,STATUS_LOW);
- else if(pointer<=eInputHatches.size())
- setStatusOfParameterIn(i,1,STATUS_OK);
- else setStatusOfParameterIn(i,1,STATUS_TOO_HIGH);
+ int pointer;
+ {
+ BitSet checkArray = new BitSet();
+ for (int i = 4; i <= 6; i++) {
+ pointer = getParameterInInt(i, 0);
+ if (Double.isNaN(pointer)) setStatusOfParameterIn(i, 0, STATUS_WRONG);
+ else if (pointer <= 0) setStatusOfParameterIn(i, 0, STATUS_TOO_LOW);
+ //else if(pointer==0)
+ // setStatusOfParameterIn(i,0,STATUS_LOW);
+ else if (pointer <= eInputHatches.size()) {
+ if (checkArray.get(pointer)) {
+ setStatusOfParameterIn(i, 0, STATUS_WRONG);
+ } else {
+ setStatusOfParameterIn(i, 0, STATUS_OK);
+ checkArray.set(pointer);
+ }
+ } else setStatusOfParameterIn(i, 0, STATUS_TOO_HIGH);
+ pointer = getParameterInInt(i, 1);
+ if (Double.isNaN(pointer)) setStatusOfParameterIn(i, 1, STATUS_WRONG);
+ else if (pointer < 0) setStatusOfParameterIn(i, 1, STATUS_TOO_LOW);
+ else if (pointer == 0) setStatusOfParameterIn(i, 1, STATUS_LOW);
+ else if (pointer <= eInputHatches.size()) {
+ if (checkArray.get(pointer)) {
+ setStatusOfParameterIn(i, 1, STATUS_WRONG);
+ } else {
+ setStatusOfParameterIn(i, 1, STATUS_OK);
+ checkArray.set(pointer);
+ }
+ } else setStatusOfParameterIn(i, 1, STATUS_TOO_HIGH);
+ }
}
- for (int i = 7; i <= 9; i++) {
- pointer= getParameterInInt(i,0);
- if(Double.isNaN(pointer))
- setStatusOfParameterIn(i,0,STATUS_WRONG);
- else if(pointer<0)
- setStatusOfParameterIn(i,0,STATUS_TOO_LOW);
- else if(pointer==0)
- setStatusOfParameterIn(i,0,STATUS_LOW);
- else if(pointer<=eOutputHatches.size())
- setStatusOfParameterIn(i,0,STATUS_OK);
- else setStatusOfParameterIn(i,0,STATUS_TOO_HIGH);
- pointer= getParameterInInt(i,1);
- if(Double.isNaN(pointer))
- setStatusOfParameterIn(i,1,STATUS_WRONG);
- else if(pointer<0)
- setStatusOfParameterIn(i,1,STATUS_TOO_LOW);
- else if(pointer==0)
- setStatusOfParameterIn(i,1,STATUS_LOW);
- else if(pointer<=eOutputHatches.size())
- setStatusOfParameterIn(i,1,STATUS_OK);
- else setStatusOfParameterIn(i,1,STATUS_TOO_HIGH);
+ {
+ for (int i = 7; i <= 9; i++) {
+ pointer = getParameterInInt(i, 0);
+ if (Double.isNaN(pointer)) setStatusOfParameterIn(i, 0, STATUS_WRONG);
+ else if (pointer < 0) setStatusOfParameterIn(i, 0, STATUS_TOO_LOW);
+ else if (pointer == 0) setStatusOfParameterIn(i, 0, STATUS_LOW);
+ else if (pointer <= eOutputHatches.size()) setStatusOfParameterIn(i, 0, STATUS_OK);
+ else setStatusOfParameterIn(i, 0, STATUS_TOO_HIGH);
+ pointer = getParameterInInt(i, 1);
+ if (Double.isNaN(pointer)) setStatusOfParameterIn(i, 1, STATUS_WRONG);
+ else if (pointer < 0) setStatusOfParameterIn(i, 1, STATUS_TOO_LOW);
+ else if (pointer == 0) setStatusOfParameterIn(i, 1, STATUS_LOW);
+ else if (pointer <= eOutputHatches.size()) setStatusOfParameterIn(i, 1, STATUS_OK);
+ else setStatusOfParameterIn(i, 1, STATUS_TOO_HIGH);
+ }
}
}
@@ -220,6 +218,6 @@ public class GT_MetaTileEntity_EM_machine extends GT_MetaTileEntity_MultiblockBa
public static abstract class Behaviour {
public abstract boolean setAndCheckParametersOutAndStatuses(GT_MetaTileEntity_EM_machine te, double[] parameters);
- public abstract MultiblockControl<cElementalInstanceStackMap> process(cElementalInstanceStackMap[] inputs, double[] parameters);
+ public abstract MultiblockControl<cElementalInstanceStackMap[]> process(cElementalInstanceStackMap[] inputs, double[] parameters);
}
}