From 827f0256ab2ab506183a3233083cb7bdf4009bcd Mon Sep 17 00:00:00 2001 From: Integer Limit <103940576+IntegerLimit@users.noreply.github.com> Date: Thu, 27 Feb 2025 19:16:56 +1100 Subject: [PATCH] Fix Large Miners Not Working with ME Output Hatches --- .../mixin/gregtech/MinerLogicMixin.java | 43 +++++++++++++++++++ .../resources/mixins.nomilabs.gregtech.json | 1 + 2 files changed, 44 insertions(+) create mode 100644 src/main/java/com/nomiceu/nomilabs/mixin/gregtech/MinerLogicMixin.java diff --git a/src/main/java/com/nomiceu/nomilabs/mixin/gregtech/MinerLogicMixin.java b/src/main/java/com/nomiceu/nomilabs/mixin/gregtech/MinerLogicMixin.java new file mode 100644 index 00000000..a2b3f053 --- /dev/null +++ b/src/main/java/com/nomiceu/nomilabs/mixin/gregtech/MinerLogicMixin.java @@ -0,0 +1,43 @@ +package com.nomiceu.nomilabs.mixin.gregtech; + +import java.util.List; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; + +import gregtech.api.capability.impl.miner.MinerLogic; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.multiblock.MultiblockWithDisplayBase; + +/** + * Fixes Multiblock Miners not being able to use ME Output Buses. + */ +@Mixin(value = MinerLogic.class, remap = false) +public class MinerLogicMixin { + + @Shadow + @Final + protected MetaTileEntity metaTileEntity; + + @WrapOperation(method = "mineAndInsertItems", + at = @At(value = "INVOKE", + target = "Lgregtech/api/util/GTTransferUtils;addItemsToItemHandler(Lnet/minecraftforge/items/IItemHandler;ZLjava/util/List;)Z", + ordinal = 0), + require = 1) + private boolean checkForInfiniteOutput(IItemHandler amountToInsert, boolean amount, List entry, + Operation original) { + // Whilst Miner does not support Voiding, ME Output Hatch Presence also returns true + if (metaTileEntity instanceof MultiblockWithDisplayBase multi && multi.canVoidRecipeItemOutputs()) { + return true; + } + return original.call(amountToInsert, amount, entry); + } +} diff --git a/src/main/resources/mixins.nomilabs.gregtech.json b/src/main/resources/mixins.nomilabs.gregtech.json index 2bc49511..10225158 100644 --- a/src/main/resources/mixins.nomilabs.gregtech.json +++ b/src/main/resources/mixins.nomilabs.gregtech.json @@ -26,6 +26,7 @@ "MetaTileEntityMEStockingHatchMixin", "MetaTileEntityProcessingArrayMixin", "MetaValueItemMixin", + "MinerLogicMixin", "MultiblockDisplayTextBuilderMixin", "MultiblockInfoCategoryMixin", "MultiblockRecipeLogicMixin",