aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity
diff options
context:
space:
mode:
authorHoleFish <48403212+HoleFish@users.noreply.github.com>2024-04-13 22:03:04 +0800
committerGitHub <noreply@github.com>2024-04-13 16:03:04 +0200
commita57fb33dfad59225277b39f3117780c42fa4a982 (patch)
treee84ca99339dfe61152afde3463c4b1409d80439e /src/main/java/gregtech/api/metatileentity
parentf635b44c834a7ab3eb341720346ea6836c15eee4 (diff)
downloadGT5-Unofficial-a57fb33dfad59225277b39f3117780c42fa4a982.tar.gz
GT5-Unofficial-a57fb33dfad59225277b39f3117780c42fa4a982.tar.bz2
GT5-Unofficial-a57fb33dfad59225277b39f3117780c42fa4a982.zip
Fix AL crash with ME hatches (#2566)
* fix * refactor
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java35
1 files changed, 34 insertions, 1 deletions
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 f8274a7f26..d964d9a7f1 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
@@ -105,6 +105,8 @@ import gregtech.common.tileentities.machines.IDualInputHatch;
import gregtech.common.tileentities.machines.IDualInputInventory;
import gregtech.common.tileentities.machines.IRecipeProcessingAwareHatch;
import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_LargeTurbine;
+import it.unimi.dsi.fastutil.objects.Object2ReferenceOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Reference2ReferenceOpenHashMap;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
@@ -1349,7 +1351,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
}
/**
- * Drains fluid from the given hatch, including {@link IDualInputHatch}.
+ * Drains fluid from the given hatch, including {@link IDualInputHatch}. Should never be used during recipe check!
*
* @param doDrain If false, fluid will not actually be consumed
* @return Whether the hatch contains enough fluid to drain
@@ -1471,6 +1473,37 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
return rList;
}
+ public Map<GT_Utility.ItemId, ItemStack> getStoredInputsFromME() {
+ Map<GT_Utility.ItemId, ItemStack> inputsFromME = new Object2ReferenceOpenHashMap<>();
+ for (GT_MetaTileEntity_Hatch_InputBus tHatch : filterValidMTEs(mInputBusses)) {
+ if (tHatch instanceof GT_MetaTileEntity_Hatch_InputBus_ME meBus) {
+ for (int i = meBus.getSizeInventory() - 1; i >= 0; i--) {
+ ItemStack itemStack = meBus.getStackInSlot(i);
+ if (itemStack != null) {
+ // Prevent the same item from different ME buses from being recognized
+ inputsFromME.put(GT_Utility.ItemId.createNoCopy(itemStack), itemStack);
+ }
+ }
+ }
+ }
+ return inputsFromME;
+ }
+
+ public Map<Fluid, FluidStack> getStoredFluidsFromME() {
+ Map<Fluid, FluidStack> fluidsFromME = new Reference2ReferenceOpenHashMap<>();
+ for (GT_MetaTileEntity_Hatch_Input tHatch : filterValidMTEs(mInputHatches)) {
+ if (tHatch instanceof GT_MetaTileEntity_Hatch_Input_ME meHatch) {
+ for (FluidStack fluid : meHatch.getStoredFluids()) {
+ if (fluid != null) {
+ // Prevent the same fluid from different ME hatches from being recognized
+ fluidsFromME.put(fluid.getFluid(), fluid);
+ }
+ }
+ }
+ }
+ return fluidsFromME;
+ }
+
@Override
public RecipeMap<?> getRecipeMap() {
return null;