aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java56
1 files changed, 36 insertions, 20 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
index c037aeb512..436c8c1e59 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_AssemblyLine.java
@@ -12,11 +12,7 @@ import gregtech.api.gui.GT_GUIContainer_MultiMachine;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_EnhancedMultiBlockBase;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input;
-import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_InputBus;
+import gregtech.api.metatileentity.implementations.*;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.GT_AssemblyLineUtils;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
@@ -173,8 +169,9 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
int[] tStack = null;
int[] tFluids = null;
+ int[] tFluidSlot = null;
boolean foundRecipe = false;
-
+
nextDataStick:
for (ItemStack tDataStick : tDataStickList) {
GT_AssemblyLineUtils.LookupResult tLookupResult = GT_AssemblyLineUtils.findAssemblyLineRecipeFromDataStick(tDataStick, false);
@@ -190,11 +187,11 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
continue;
}
}
-
+
// So here we check against the recipe found on the data stick.
// If we run into missing buses/hatches or bad inputs, we go to the next data stick.
// This check only happens if we have a valid up to date data stick.
-
+
// Check Inputs allign
int aItemCount = tRecipe.mInputs.length;
tStack = new int[aItemCount];
@@ -212,26 +209,37 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
GT_FML_LOGGER.info("Item: " + i + " accepted");
}
}
-
+
// Check Fluid Inputs allign
int aFluidCount = tRecipe.mFluidInputs.length;
tFluids = new int[aFluidCount];
+ tFluidSlot = new int[aFluidCount];
for (int i = 0; i < aFluidCount; i++){
if (mInputHatches.get(i) == null) {
continue nextDataStick;
}
else {
- FluidStack fluidInHatch = mInputHatches.get(i).mFluid;
- if (!GT_Utility.areFluidsEqual(fluidInHatch, tRecipe.mFluidInputs[i], true) || fluidInHatch.amount < tRecipe.mFluidInputs[i].amount) {
- continue nextDataStick;
+ if (mInputHatches.get(i) instanceof GT_MetaTileEntity_Hatch_MultiInput) {
+ GT_MetaTileEntity_Hatch_MultiInput tMultiHatch = (GT_MetaTileEntity_Hatch_MultiInput) mInputHatches.get(i);
+ if (!tMultiHatch.hasFluid(tRecipe.mFluidInputs[i]) || tMultiHatch.getFluidAmount(tRecipe.mFluidInputs[i]) < tRecipe.mFluidInputs[i].amount) {
+ continue nextDataStick;
+ }
+ tFluids[i] = tRecipe.mFluidInputs[i].amount;
+ tFluidSlot[i] = tMultiHatch.getFluidSlot(tRecipe.mFluidInputs[i]);
+ }
+ else {
+ FluidStack fluidInHatch = mInputHatches.get(i).mFluid;
+ if (!GT_Utility.areFluidsEqual(fluidInHatch, tRecipe.mFluidInputs[i], true) || fluidInHatch.amount < tRecipe.mFluidInputs[i].amount) {
+ continue nextDataStick;
+ }
+ tFluids[i] = tRecipe.mFluidInputs[i].amount;
}
- tFluids[i] = tRecipe.mFluidInputs[i].amount;
if (GT_Values.D1) {
GT_FML_LOGGER.info("Fluid:" + i + " accepted");
}
}
}
-
+
if (GT_Values.D1) {
GT_FML_LOGGER.info("Check overclock");
}
@@ -244,18 +252,18 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
continue;
}
if (GT_Values.D1) {
- GT_FML_LOGGER.info("Find available recipe");
+ GT_FML_LOGGER.info("Find available recipe");
}
mOutputItems = new ItemStack[] {tRecipe.mOutput};
foundRecipe = true;
break ;
}
-
+
// Best not to run this recipe.
if (!foundRecipe || tStack.length <= 0) {
return false;
}
-
+
if (GT_Values.D1) {
GT_FML_LOGGER.info("All checked start consuming inputs");
@@ -266,9 +274,17 @@ public class GT_MetaTileEntity_AssemblyLine extends GT_MetaTileEntity_EnhancedMu
}
for (int i = 0; i < tFluids.length; i++) {
- mInputHatches.get(i).mFluid.amount -= tFluids[i];
- if (mInputHatches.get(i).mFluid.amount <= 0) {
- mInputHatches.get(i).mFluid = null;
+ if (mInputHatches.get(i) instanceof GT_MetaTileEntity_Hatch_MultiInput) {
+ GT_MetaTileEntity_Hatch_MultiInput tMultiHatch = (GT_MetaTileEntity_Hatch_MultiInput) mInputHatches.get(i);
+ tMultiHatch.getFluid(tFluidSlot[i]).amount -= tFluids[i];
+ if (tMultiHatch.getFluid(tFluidSlot[i]).amount <= 0) {
+ tMultiHatch.setFluid(null, tFluidSlot[i]);
+ }
+ } else {
+ mInputHatches.get(i).mFluid.amount -= tFluids[i];
+ if (mInputHatches.get(i).mFluid.amount <= 0) {
+ mInputHatches.get(i).mFluid = null;
+ }
}
}