diff options
author | BlueWeabo <ilia.iliev2005@gmail.com> | 2023-02-12 17:02:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-12 16:02:54 +0100 |
commit | 8e1fc766d8f01211644932468a3ae453b7afcd62 (patch) | |
tree | e7851b9bfdb5d07ae298b4a15cf4d9170b78fdb0 /src/main/java/gregtech/common | |
parent | 136a147529adc83eb775a2e8a8c81ff055ce8838 (diff) | |
download | GT5-Unofficial-8e1fc766d8f01211644932468a3ae453b7afcd62.tar.gz GT5-Unofficial-8e1fc766d8f01211644932468a3ae453b7afcd62.tar.bz2 GT5-Unofficial-8e1fc766d8f01211644932468a3ae453b7afcd62.zip |
Add a recipe check to MuTEs (#1727)
* working recipes!
* clean up and save items which need to be outputted
* reviews
Diffstat (limited to 'src/main/java/gregtech/common')
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java b/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java index fa0a6298f6..d4810aa195 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java +++ b/src/main/java/gregtech/common/tileentities/machines/multiblock/MultiBlock_Macerator.java @@ -3,8 +3,10 @@ package gregtech.common.tileentities.machines.multiblock; import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain; import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose; import static gregtech.api.enums.Textures.BlockIcons.MACHINE_CASINGS; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE; import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_GLOW; import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.ENERGY_IN; import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.FLUID_IN; import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.FLUID_OUT; @@ -13,15 +15,21 @@ import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.ITEM_O import static gregtech.api.multitileentity.multiblock.base.MultiBlockPart.NOTHING; import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; + +import org.apache.commons.lang3.tuple.Pair; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.StructureDefinition; import com.gtnewhorizon.structurelib.util.Vec3Impl; +import gregtech.api.enums.TierEU; import gregtech.api.interfaces.ITexture; import gregtech.api.multitileentity.multiblock.base.MultiBlock_Stackable; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Recipe.GT_Recipe_Map; public class MultiBlock_Macerator extends MultiBlock_Stackable<MultiBlock_Macerator> { @@ -135,12 +143,51 @@ public class MultiBlock_Macerator extends MultiBlock_Stackable<MultiBlock_Macera // Base Texture MACHINE_CASINGS[1][0], // Active - TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE).extFacing().build(), + isActive() + ? TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE).extFacing() + .build() + : TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE).extFacing() + .build(), // Active Glow - TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE_GLOW).extFacing() - .glow().build() }; + isActive() + ? TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_ACTIVE_GLOW) + .extFacing().glow().build() + : TextureFactory.builder().addIcon(OVERLAY_FRONT_ELECTRIC_BLAST_FURNACE_GLOW).extFacing() + .glow().build() }; } // Base Texture return new ITexture[] { MACHINE_CASINGS[1][0] }; } + + @Override + public boolean checkRecipe(ItemStack aStack) { + if (isSeparateInputs()) { + for (Pair<ItemStack[], String> tItemInputs : getItemInputsForEachInventory()) { + if (processRecipe(aStack, tItemInputs.getLeft(), tItemInputs.getRight())) { + return true; + } + } + return false; + } else { + ItemStack[] tItemInputs = getInventoriesForInput().getStacks().toArray(new ItemStack[0]); + return processRecipe(aStack, tItemInputs, null); + } + } + + private boolean processRecipe(ItemStack aStack, ItemStack[] aItemInputs, String aInventory) { + GT_Recipe_Map tRecipeMap = GT_Recipe_Map.sMaceratorRecipes; + GT_Recipe tRecipe = tRecipeMap.findRecipe(this, false, TierEU.IV, null, aItemInputs); + if (tRecipe == null) { + return false; + } + + if (!tRecipe.isRecipeInputEqual(true, false, 1, null, aItemInputs)) { + return false; + } + + mMaxProgressTime = tRecipe.mDuration; + + setItemOutputs(tRecipe.mOutputs, aInventory); + return true; + } } |