diff options
author | chochem <40274384+chochem@users.noreply.github.com> | 2024-03-15 10:26:40 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-15 10:26:40 +0000 |
commit | 4a632ffcdfe4157111a5ac7004151392b06d2c8c (patch) | |
tree | 0e78f0758d365ba786d33a3ff37e8759c2d867d4 /src/main/java/gregtech/api/metatileentity/implementations | |
parent | cb3b0e30f4e4691399d202e00852b8cc19b88f4a (diff) | |
download | GT5-Unofficial-4a632ffcdfe4157111a5ac7004151392b06d2c8c.tar.gz GT5-Unofficial-4a632ffcdfe4157111a5ac7004151392b06d2c8c.tar.bz2 GT5-Unofficial-4a632ffcdfe4157111a5ac7004151392b06d2c8c.zip |
Ensure crib works for multismelter (#2538)
crib for smelter
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/implementations')
-rw-r--r-- | src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java | 56 |
1 files changed, 56 insertions, 0 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 5d552bccc0..1b91b4c91c 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,6 +12,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; @@ -1416,6 +1417,61 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity return rList; } + /** + * Anything that is usually separated off in {@link #getStoredInputs()} (like crafting input bus/buffer) is also + * included here. + */ + public ArrayList<ItemStack> getAllStoredInputs() { + ArrayList<ItemStack> rList = new ArrayList<>(); + + if (supportsCraftingMEBuffer()) { + for (IDualInputHatch dualInputHatch : mDualInputHatches) { + Iterator<? extends IDualInputInventory> inventoryIterator = dualInputHatch.inventories(); + while (inventoryIterator.hasNext()) { + ItemStack[] items = inventoryIterator.next() + .getItemInputs(); + if (items == null) { + continue; + } + for (int i = 0; i < items.length; i++) { + ItemStack item = items[i]; + if (item != null) { + rList.add(item); + } + } + } + } + } + + Map<GT_Utility.ItemId, ItemStack> inputsFromME = new HashMap<>(); + for (GT_MetaTileEntity_Hatch_InputBus tHatch : filterValidMTEs(mInputBusses)) { + if (tHatch instanceof GT_MetaTileEntity_Hatch_CraftingInput_ME) { + continue; + } + 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) { + 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; + } + @Override public RecipeMap<?> getRecipeMap() { return null; |