aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-10-29 18:49:50 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-10-29 18:49:50 +1000
commit10974e7952ad9853c63bcbbb5a83952f97b2bbb1 (patch)
treef741b285d48e5d04b9f2fe80fe861d2e748c4f97 /src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity
parentc71587d29df09fb3c3c2b566f4c08f750d6fa423 (diff)
downloadGT5-Unofficial-10974e7952ad9853c63bcbbb5a83952f97b2bbb1.tar.gz
GT5-Unofficial-10974e7952ad9853c63bcbbb5a83952f97b2bbb1.tar.bz2
GT5-Unofficial-10974e7952ad9853c63bcbbb5a83952f97b2bbb1.zip
$ Fixed output overflow on most multi-blocks.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity')
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index 59f98b8767..a6121f783d 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -22,9 +22,11 @@ import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Outpu
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Utility;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.core.util.array.Pair;
import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine;
@@ -824,5 +826,46 @@ public abstract class GregtechMeta_MultiBlockBase extends MetaTileEntity {
//
}
+ public int getValidOutputSlots(GT_Recipe.GT_Recipe_Map sRecipeMap, ItemStack[] sInputs){
+ ArrayList<ItemStack> tInputList = getStoredInputs();
+ GT_Recipe tRecipe = sRecipeMap.findRecipe(getBaseMetaTileEntity(), false, 9223372036854775807L, null, sInputs);
+ ArrayList<Pair<GT_MetaTileEntity_Hatch_OutputBus, Integer>> rList = new ArrayList<Pair<GT_MetaTileEntity_Hatch_OutputBus, Integer>>();
+ int tTotalHatches=0;
+ for (GT_MetaTileEntity_Hatch_OutputBus tHatch : mOutputBusses) {
+ int hatchUsedSlotCount = 0;
+ if (isValidMetaTileEntity(tHatch)) {
+ tTotalHatches++;
+ for (int i=0; i<tHatch.getBaseMetaTileEntity().getSizeInventory(); i++) {
+ if (tHatch.getBaseMetaTileEntity().getStackInSlot(i) != null){hatchUsedSlotCount++;}
+ }
+ rList.add(new Pair<GT_MetaTileEntity_Hatch_OutputBus, Integer>(tHatch, hatchUsedSlotCount));
+ }
+ }
+ boolean[] mValidOutputSlots = new boolean[tTotalHatches];
+ int arrayPos=0;
+ for (Pair<GT_MetaTileEntity_Hatch_OutputBus, Integer> IE : rList) {
+ GT_MetaTileEntity_Hatch_OutputBus vTE = IE.getKey();
+ int vUsedSlots = IE.getValue();
+ if (vUsedSlots == 0){mValidOutputSlots[arrayPos] = true;}
+ else if (vUsedSlots < vTE.getSizeInventory()){
+ int outputItemCount = tRecipe.mOutputs.length;
+ if (vUsedSlots < vTE.getSizeInventory()-outputItemCount){mValidOutputSlots[arrayPos] = true;}
+ else if (vUsedSlots >= vTE.getSizeInventory()-outputItemCount){
+ if (vUsedSlots > vTE.getSizeInventory()-outputItemCount){if (arrayPos == tTotalHatches){return 0;} /*Change to Hatch total*/ }
+ }
+ }
+ //Hatch is full
+ if (vUsedSlots == vTE.getSizeInventory()){
+ mValidOutputSlots[arrayPos] = false;
+ if (arrayPos == tTotalHatches){return 0;} // Change to Hatch Total
+ }
+ arrayPos++;
+ }
+ int tValidOutputSlots = 0;
+ for (int cr=0;cr<mValidOutputSlots.length;cr++){if (mValidOutputSlots[cr]){tValidOutputSlots++;}}
+ if (tValidOutputSlots >= 1) {return tValidOutputSlots;}
+ return 0;
+ }
+
}