aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java37
1 files changed, 26 insertions, 11 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 645654c609..e13ad191eb 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
@@ -12,7 +12,9 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -33,6 +35,7 @@ import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import org.jetbrains.annotations.ApiStatus;
@@ -90,6 +93,7 @@ import gregtech.client.GT_SoundLoop;
import gregtech.common.GT_Pollution;
import gregtech.common.gui.modularui.widget.CheckRecipeResultSyncer;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
+import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_InputBus_ME;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Input_ME;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_Output_ME;
@@ -1315,31 +1319,32 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
}
ArrayList<FluidStack> rList = new ArrayList<>();
+ Map<Fluid, FluidStack> inputsFromME = new HashMap<>();
for (GT_MetaTileEntity_Hatch_Input tHatch : filterValidMTEs(mInputHatches)) {
setHatchRecipeMap(tHatch);
- if (tHatch instanceof GT_MetaTileEntity_Hatch_MultiInput) {
- for (FluidStack tFluid : ((GT_MetaTileEntity_Hatch_MultiInput) tHatch).getStoredFluid()) {
+ if (tHatch instanceof GT_MetaTileEntity_Hatch_MultiInput multiInputHatch) {
+ for (FluidStack tFluid : multiInputHatch.getStoredFluid()) {
if (tFluid != null) {
- // GT_Log.out.print("mf: " + tFluid + "\n");
rList.add(tFluid);
}
}
- } else if (tHatch instanceof GT_MetaTileEntity_Hatch_Input_ME) {
- if (isValidMetaTileEntity(tHatch)) {
- for (FluidStack fluidStack : ((GT_MetaTileEntity_Hatch_Input_ME) tHatch).getStoredFluids()) {
- if (fluidStack == null) continue;
-
- rList.add(fluidStack);
+ } else if (tHatch instanceof GT_MetaTileEntity_Hatch_Input_ME meHatch) {
+ for (FluidStack fluidStack : meHatch.getStoredFluids()) {
+ if (fluidStack != null) {
+ // Prevent the same fluid from different ME hatches from being recognized
+ inputsFromME.put(fluidStack.getFluid(), fluidStack);
}
}
} else {
if (tHatch.getFillableStack() != null) {
- // GT_Log.out.print("sf: " + tHatch.getFillableStack() + "\n");
rList.add(tHatch.getFillableStack());
}
}
}
+ if (!inputsFromME.isEmpty()) {
+ rList.addAll(inputsFromME.values());
+ }
return rList;
}
@@ -1356,19 +1361,29 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
}
ArrayList<ItemStack> rList = new ArrayList<>();
+ Map<GT_Utility.ItemId, ItemStack> inputsFromME = new HashMap<>();
for (GT_MetaTileEntity_Hatch_InputBus tHatch : filterValidMTEs(mInputBusses)) {
tHatch.mRecipeMap = getRecipeMap();
IGregTechTileEntity tileEntity = tHatch.getBaseMetaTileEntity();
+ boolean isMEBus = tHatch instanceof GT_MetaTileEntity_Hatch_InputBus_ME;
for (int i = tileEntity.getSizeInventory() - 1; i >= 0; i--) {
ItemStack itemStack = tileEntity.getStackInSlot(i);
if (itemStack != null) {
- rList.add(itemStack);
+ if (isMEBus) {
+ // Prevent the same item from different ME buses from being recognized
+ inputsFromME.put(GT_Utility.ItemId.createNoCopy(itemStack), itemStack);
+ } else {
+ rList.add(itemStack);
+ }
}
}
}
if (getStackInSlot(1) != null && getStackInSlot(1).getUnlocalizedName()
.startsWith("gt.integrated_circuit")) rList.add(getStackInSlot(1));
+ if (!inputsFromME.isEmpty()) {
+ rList.addAll(inputsFromME.values());
+ }
return rList;
}