diff options
author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2023-06-22 12:50:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-22 12:50:02 +0200 |
commit | eb268a3c9329a9e4466ca5046016149b319c1842 (patch) | |
tree | cb8a9997d3019e69c2c2900893e38a6625191f3d /src/main/java/kubatech/api/implementations | |
parent | 3e7d12c4150e49f2fae14f6c7dcdbbfad11ef519 (diff) | |
download | GT5-Unofficial-eb268a3c9329a9e4466ca5046016149b319c1842.tar.gz GT5-Unofficial-eb268a3c9329a9e4466ca5046016149b319c1842.tar.bz2 GT5-Unofficial-eb268a3c9329a9e4466ca5046016149b319c1842.zip |
Output all crops / bees when controller is broken (#80)
* Fix bug in EEC
* Output all crops / bees when controller is broken
Diffstat (limited to 'src/main/java/kubatech/api/implementations')
-rw-r--r-- | src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java b/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java index 09fb0a9b67..20de79cc24 100644 --- a/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java +++ b/src/main/java/kubatech/api/implementations/KubaTechGTMultiBlockBase.java @@ -25,6 +25,8 @@ import static kubatech.api.Variables.ln4; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.function.Function; import net.minecraft.item.ItemStack; @@ -48,6 +50,8 @@ import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.metatileentity.BaseMetaTileEntity; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_OutputBus; +import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME; public abstract class KubaTechGTMultiBlockBase<T extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T>> extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<T> { @@ -196,6 +200,36 @@ public abstract class KubaTechGTMultiBlockBase<T extends GT_MetaTileEntity_Exten return Math.log((double) getMaxInputEu() / 8d) / ln4 + 1e-8d; } + protected boolean tryOutputAll(List<ItemStack> list) { + return tryOutputAll(list, l -> Collections.singletonList((ItemStack) l)); + } + + protected boolean tryOutputAll(List<?> list, Function<Object, List<ItemStack>> mappingFunction) { + if (list == null || list.isEmpty() || mappingFunction == null) return false; + 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++; + } + if (emptySlots == 0 && !ignoreEmptiness) return false; + boolean wasSomethingRemoved = false; + while (!list.isEmpty()) { + List<ItemStack> toOutputNow = mappingFunction.apply(list.get(0)); + if (!ignoreEmptiness && emptySlots < toOutputNow.size()) break; + list.remove(0); + wasSomethingRemoved = true; + for (ItemStack stack : toOutputNow) { + addOutput(stack); + } + } + return wasSomethingRemoved; + } + @Override public boolean isCorrectMachinePart(ItemStack aStack) { return true; |