diff options
author | Technus <daniel112092@gmail.com> | 2017-08-03 22:47:12 +0200 |
---|---|---|
committer | Technus <daniel112092@gmail.com> | 2017-08-03 22:47:12 +0200 |
commit | 32fe75001aa6c8491432bdf9c8d19c1e5449b4bf (patch) | |
tree | fa15666cb7dd881164bd9c150e468a37ad744c4b /src/main/java/gregtech/api/metatileentity/implementations | |
parent | 4a66c8f221f0e2cdb7a69ffccc5eb44d811d0358 (diff) | |
parent | 77161c7daf90485265fc6e948ca1159f0c0e7fd8 (diff) | |
download | GT5-Unofficial-32fe75001aa6c8491432bdf9c8d19c1e5449b4bf.tar.gz GT5-Unofficial-32fe75001aa6c8491432bdf9c8d19c1e5449b4bf.tar.bz2 GT5-Unofficial-32fe75001aa6c8491432bdf9c8d19c1e5449b4bf.zip |
Merge branch 'experimental' of https://github.com/GTNewHorizons/GT5-Unofficial into experimental
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/implementations')
2 files changed, 41 insertions, 17 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java index b1a74ab303..bdf198bf4c 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java @@ -14,6 +14,7 @@ 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_IntegratedCircuit_Item; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; @@ -631,8 +632,31 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B } protected ItemStack[] getAllInputs() { - ItemStack[] rInputs = new ItemStack[mInputSlotCount]; - for (int i = 0; i < mInputSlotCount; i++) rInputs[i] = getInputAt(i); + ItemStack[] rInputs = new ItemStack[mInputSlotCount + 1]; + boolean foundEmptySlotOrAreTwoInputsEqual = false; + boolean foundIntegratedCircuit = false; + for (int i = 0; i < mInputSlotCount; i++){ + ItemStack currentInput = getInputAt(i); + if (currentInput == null) { + foundEmptySlotOrAreTwoInputsEqual = true; + continue; + } + rInputs[i] = currentInput; + + if (!foundIntegratedCircuit && currentInput != null && currentInput.getItem() instanceof GT_IntegratedCircuit_Item) { + foundIntegratedCircuit = true; + } + if (!foundEmptySlotOrAreTwoInputsEqual) { + for (int j = 0; j < i; j++) { + if (GT_Utility.areStacksEqual(rInputs[i], rInputs[j])) { + foundEmptySlotOrAreTwoInputsEqual = true; + } + } + } + } + if (!foundIntegratedCircuit && foundEmptySlotOrAreTwoInputsEqual) { + rInputs[mInputSlotCount] = GT_Utility.getIntegratedCircuit(0); + } return rInputs; } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java index a89ed0779a..6ea6df7b4c 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java @@ -263,15 +263,8 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { } addOutput(tStack); } - if(mOutputFluids!=null) { - if (mOutputFluids.length == 1) { - for (FluidStack tStack : mOutputFluids) - if (tStack != null) { - addOutput(tStack); - } - } else if (mOutputFluids.length > 1) { - addFluidOutputs(mOutputFluids); - } + if (mOutputFluids != null) { + addFluidOutputs(mOutputFluids); } mEfficiency = Math.max(0, Math.min(mEfficiency + mEfficiencyIncrease, getMaxEfficiency(mInventory[1]) - ((getIdealStatus() - getRepairStatus()) * 1000))); mOutputItems = null; @@ -606,13 +599,20 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { } protected void addFluidOutputs(FluidStack[] mOutputFluids) { - int min=mOutputFluids.length>mOutputHatches.size()?mOutputHatches.size():mOutputFluids.length; - for (int i = 0; i < min; ++i) { - if (this.mOutputHatches.get(i) != null && mOutputFluids[i] != null && isValidMetaTileEntity(this.mOutputHatches.get(i))) { - this.mOutputHatches.get(i).fill(mOutputFluids[i], true); - } + for (FluidStack outputFluidStack : mOutputFluids) { + if (outputFluidStack != null) { + FluidStack copiedStack = outputFluidStack.copy(); + for (GT_MetaTileEntity_Hatch_Output outputhatch : mOutputHatches) { + if (copiedStack.amount <= 0) { + break; + } + if (!isValidMetaTileEntity(outputhatch)) { + continue; + } + copiedStack.amount -= outputhatch.fill(copiedStack, true); + } + } } - } public boolean depleteInput(FluidStack aLiquid) { |