aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2017-03-04 18:18:31 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2017-03-04 18:18:31 +1000
commit45c9ee32587a64fa9d63d0ce6b70f2ba039a8248 (patch)
tree2e4bc50fdb098982b4ba63b7e84ee29d0eb8603f
parentc1bc1264c68eba43600a318f71a428e879fec7f6 (diff)
downloadGT5-Unofficial-45c9ee32587a64fa9d63d0ce6b70f2ba039a8248.tar.gz
GT5-Unofficial-45c9ee32587a64fa9d63d0ce6b70f2ba039a8248.tar.bz2
GT5-Unofficial-45c9ee32587a64fa9d63d0ce6b70f2ba039a8248.zip
$ Fixed Multiblock Output Overflow Logic, thanks to Itszuvalex.
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java66
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialPlatePress.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java2
6 files changed, 36 insertions, 45 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 c39c8f3789..c25bf1140a 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
@@ -10,17 +10,20 @@ import gregtech.api.enums.*;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.items.GT_MetaGenerated_Tool;
+import gregtech.api.metatileentity.BaseMetaTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.*;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.*;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gtPlusPlus.core.util.Utils;
import gtPlusPlus.core.util.array.Pair;
import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.gui.GUI_MultiMachine;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fluids.FluidStack;
@@ -932,45 +935,32 @@ public abstract class GregtechMeta_MultiBlockBase extends MetaTileEntity {
//
}
- public int getValidOutputSlots(final GT_Recipe.GT_Recipe_Map sRecipeMap, final ItemStack[] sInputs){
+ public int getValidOutputSlots(final IGregTechTileEntity machineCalling, final GT_Recipe sRecipes, final ItemStack[] sInputs){
+ Utils.LOG_INFO("Finding valid output slots");
final ArrayList<ItemStack> tInputList = this.getStoredInputs();
- final GT_Recipe tRecipe = sRecipeMap.findRecipe(this.getBaseMetaTileEntity(), false, 9223372036854775807L, null, sInputs);
- final ArrayList<Pair<GT_MetaTileEntity_Hatch_OutputBus, Integer>> rList = new ArrayList<>();
- int tTotalHatches=0;
- for (final GT_MetaTileEntity_Hatch_OutputBus tHatch : this.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<>(tHatch, hatchUsedSlotCount));
- }
- }
- final boolean[] mValidOutputSlots = new boolean[tTotalHatches];
- int arrayPos=0;
- for (final Pair<GT_MetaTileEntity_Hatch_OutputBus, Integer> IE : rList) {
- final GT_MetaTileEntity_Hatch_OutputBus vTE = IE.getKey();
- final int vUsedSlots = IE.getValue();
- if (vUsedSlots == 0){mValidOutputSlots[arrayPos] = true;}
- else if (vUsedSlots < vTE.getSizeInventory()){
- final 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;
+ final GT_Recipe tRecipe = sRecipes;
+ final int outputItemCount = tRecipe.mOutputs.length;
+ int tValidOutputHatches = 0;
+
+ for (final GT_MetaTileEntity_Hatch_OutputBus tHatch : this.mOutputBusses) {
+ if (!isValidMetaTileEntity(tHatch)) continue;
+
+ int tEmptySlots = 0;
+ boolean foundRoom = false;
+ final IInventory tHatchInv = tHatch.getBaseMetaTileEntity();
+ for(int i = 0; i < tHatchInv.getSizeInventory() && !foundRoom; ++i)
+ {
+ if(tHatchInv.getStackInSlot(i) != null) continue;
+
+ tEmptySlots++;
+ if(tEmptySlots < outputItemCount) continue;
+
+ tValidOutputHatches++;
+ foundRoom = true;
+ }
+ }
+
+ return tValidOutputHatches;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java
index bcb89f3bfc..bbec728ad5 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialCokeOven.java
@@ -87,6 +87,7 @@ extends GregtechMeta_MultiBlockBase {
@Override
public boolean checkRecipe(final ItemStack aStack) {
+ Utils.LOG_INFO("Trying to process Coal coke");
final ArrayList<ItemStack> tInputList = this.getStoredInputs();
for (int i = 0; i < (tInputList.size() - 1); i++) {
for (int j = i + 1; j < tInputList.size(); j++) {
@@ -117,8 +118,8 @@ extends GregtechMeta_MultiBlockBase {
}
final FluidStack[] tFluids = Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1);
- final int tValidOutputSlots = this.getValidOutputSlots(this.getRecipeMap(), tInputs);
- Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots);
+ final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), Recipe_GT.Gregtech_Recipe_Map.sCokeOvenRecipes.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[(byte) Math.max(1, GT_Utility.getTier(this.getMaxInputVoltage()))], tFluids, tInputs), tInputs);
+ Utils.LOG_INFO("Valid Output Slots: "+tValidOutputSlots);
//More than or one input
if ((tInputList.size() > 0) && (tValidOutputSlots >= 1)) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java
index 70e0e9546e..1f308d2d95 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialElectrolyzer.java
@@ -114,7 +114,7 @@ extends GregtechMeta_MultiBlockBase {
}
final FluidStack[] tFluids = Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1);
- final int tValidOutputSlots = this.getValidOutputSlots(this.getRecipeMap(), tInputs);
+ final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), GT_Recipe.GT_Recipe_Map.sElectrolyzerRecipes.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[(byte) Math.max(1, GT_Utility.getTier(this.getMaxInputVoltage()))], tFluids, tInputs), tInputs);
Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots);
//More than or one input
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java
index 497e2979f8..47851b4e45 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialMacerator.java
@@ -133,8 +133,8 @@ extends GregtechMeta_MultiBlockBase {
final GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sMaceratorRecipes.findRecipe(this.getBaseMetaTileEntity(), false, 9223372036854775807L, null, tInputs);
- final int tValidOutputSlots = this.getValidOutputSlots(this.getRecipeMap(), tInputs);
- Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots);
+ final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), tRecipe, tInputs);
+ Utils.LOG_INFO("Maceration Stack - Valid Output Slots: "+tValidOutputSlots);
//More than or one input
if ((tInputList.size() > 0) && (tValidOutputSlots >= 1)) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialPlatePress.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialPlatePress.java
index 5b56a4357c..d48086a911 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialPlatePress.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialPlatePress.java
@@ -108,7 +108,7 @@ extends GregtechMeta_MultiBlockBase {
}
final FluidStack[] tFluids = Arrays.copyOfRange(tFluidList.toArray(new FluidStack[tInputList.size()]), 0, 1);
- final int tValidOutputSlots = this.getValidOutputSlots(this.getRecipeMap(), tInputs);
+ final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), GT_Recipe.GT_Recipe_Map.sBenderRecipes.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[(byte) Math.max(1, GT_Utility.getTier(this.getMaxInputVoltage()))], tFluids, tInputs), tInputs);
Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots);
//More than or one input
if ((tInputList.size() > 0) && (tValidOutputSlots >= 1)) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java
index 15dbb35dd3..95c7aed4ad 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_IndustrialWireMill.java
@@ -82,7 +82,7 @@ extends GregtechMeta_MultiBlockBase {
final GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sWiremillRecipes.findRecipe(this.getBaseMetaTileEntity(), false, gregtech.api.enums.GT_Values.V[tTier], null, new ItemStack[]{tInput});
if (tRecipe != null) {
- final int tValidOutputSlots = this.getValidOutputSlots(this.getRecipeMap(), new ItemStack[]{tInput});
+ final int tValidOutputSlots = this.getValidOutputSlots(this.getBaseMetaTileEntity(), tRecipe, new ItemStack[]{tInput});
Utils.LOG_WARNING("Valid Output Slots: "+tValidOutputSlots);
//More than or one input
if ((tInputList.size() > 0) && (tValidOutputSlots >= 1)) {