diff options
author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2022-10-08 13:11:26 +0200 |
---|---|---|
committer | kuba6000 <kuba.123123.6000@gmail.com> | 2022-10-08 13:11:26 +0200 |
commit | 0c85bd2d030f3c8ae6ec124c66de5926955650eb (patch) | |
tree | 80b2df8dcb8c5fd0101961229dfbb125f005cf1c | |
parent | b3152688bdbb40267d594de229befafa546cb1e0 (diff) | |
download | GT5-Unofficial-0c85bd2d030f3c8ae6ec124c66de5926955650eb.tar.gz GT5-Unofficial-0c85bd2d030f3c8ae6ec124c66de5926955650eb.tar.bz2 GT5-Unofficial-0c85bd2d030f3c8ae6ec124c66de5926955650eb.zip |
EIG: Fix multiple input hatches beeing ignored & Make setup modes faster. (GTNewHorizons/bartworks#210)
* Deplete water from all hatches
* Make setup modes fast
* spotlessApply (GTNewHorizons/bartworks#211)
Co-authored-by: Jakub <53441451+kuba6000@users.noreply.github.com>
Co-authored-by: GitHub GTNH Actions <>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-rw-r--r-- | src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java | 59 |
1 files changed, 49 insertions, 10 deletions
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java index 5e571be54e..784e080c36 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeIndustrialGreenhouse.java @@ -40,12 +40,12 @@ import gregtech.api.enums.Textures; 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_Energy; +import gregtech.api.metatileentity.implementations.*; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Utility; import gregtech.common.GT_DummyWorld; +import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME; import ic2.api.crops.CropCard; import ic2.api.crops.Crops; import ic2.core.Ic2Items; @@ -316,13 +316,26 @@ public class GT_MetaTileEntity_ExtremeIndustrialGreenhouse startRecipeProcessing(); if (setupphase == 1 && mStorage.size() < mMaxSlots) { List<ItemStack> inputs = getStoredInputs(); - for (ItemStack input : inputs) if (addCrop(input)) break; + for (ItemStack input : inputs) addCrop(input); this.updateSlots(); } else if (setupphase == 2 && mStorage.size() > 0) { - this.addOutput(this.mStorage.get(0).input.copy()); - if (this.mStorage.get(0).undercrop != null) - this.addOutput(this.mStorage.get(0).undercrop.copy()); - this.mStorage.remove(0); + int emptySlots = 0; + boolean ignoreEmptiness = false; + for (GT_MetaTileEntity_Hatch_OutputBus i : mOutputBusses) { + if (i instanceof GT_MetaTileEntity_Hatch_OutputBus_ME) { + ignoreEmptiness = true; + break; + } + for (int j = 0; j < i.getSizeInventory(); j++) + if (i.isValidSlot(j)) if (i.getStackInSlot(j) == null) emptySlots++; + } + while (mStorage.size() > 0) { + if (!ignoreEmptiness && (emptySlots -= 2) < 0) break; + this.addOutput(this.mStorage.get(0).input.copy()); + if (this.mStorage.get(0).undercrop != null) + this.addOutput(this.mStorage.get(0).undercrop.copy()); + this.mStorage.remove(0); + } this.updateSlots(); } endRecipeProcessing(); @@ -366,8 +379,34 @@ public class GT_MetaTileEntity_ExtremeIndustrialGreenhouse waterusage = 0; for (GreenHouseSlot s : mStorage) waterusage += s.input.stackSize; - - if (!depleteInput(new FluidStack(FluidRegistry.WATER, waterusage * 1000)) && !debug) return false; + waterusage *= 1000; + + List<GT_MetaTileEntity_Hatch_Input> fluids = mInputHatches; + List<GT_MetaTileEntity_Hatch_Input> fluidsToUse = new ArrayList<>(fluids.size()); + int watercheck = waterusage; + FluidStack waterStack = new FluidStack(FluidRegistry.WATER, 1); + for (GT_MetaTileEntity_Hatch_Input i : fluids) { + if (!isValidMetaTileEntity(i)) continue; + if (i instanceof GT_MetaTileEntity_Hatch_MultiInput) { + int amount = ((GT_MetaTileEntity_Hatch_MultiInput) i).getFluidAmount(waterStack); + if (amount == 0) continue; + watercheck -= amount; + } else { + FluidStack stack = i.getDrainableStack(); + if (stack == null) continue; + if (!stack.isFluidEqual(waterStack)) continue; + if (stack.amount <= 0) continue; + watercheck -= stack.amount; + } + fluidsToUse.add(i); + if (watercheck <= 0) break; + } + if (watercheck > 0 && !debug) return false; + watercheck = waterusage; + for (GT_MetaTileEntity_Hatch_Input i : fluidsToUse) { + int used = i.drain(watercheck, true).amount; + watercheck -= used; + } // OVERCLOCK // FERTILIZER IDEA - IC2 +10% per fertilizer per crop per operation, NORMAL +200% per fertilizer per crop per @@ -459,7 +498,7 @@ public class GT_MetaTileEntity_ExtremeIndustrialGreenhouse ? (isIC2Mode ? "IC2 crops" : "Normal crops") : ("Setup mode " + (setupphase == 1 ? "(input)" : "(output)"))) + EnumChatFormatting.RESET, - "Uses " + waterusage * 1000 + "L/operation of water", + "Uses " + waterusage + "L/operation of water", "Max slots: " + EnumChatFormatting.GREEN + this.mMaxSlots + EnumChatFormatting.RESET, "Used slots: " + ((mStorage.size() > mMaxSlots) ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + this.mStorage.size() + EnumChatFormatting.RESET)); |