aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/api/implementations
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2023-06-22 12:50:02 +0200
committerGitHub <noreply@github.com>2023-06-22 12:50:02 +0200
commiteb268a3c9329a9e4466ca5046016149b319c1842 (patch)
treecb8a9997d3019e69c2c2900893e38a6625191f3d /src/main/java/kubatech/api/implementations
parent3e7d12c4150e49f2fae14f6c7dcdbbfad11ef519 (diff)
downloadGT5-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.java34
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;