From e8a5bf7c4afebc6fe4fddd1c2bcfc78834cc4921 Mon Sep 17 00:00:00 2001 From: zeng-github01 <95841646+zeng-github01@users.noreply.github.com> Date: Fri, 16 Oct 2026 16:18:25 +0800 Subject: [PATCH] Streamline code and update toolchain --- build.gradle | 2 +- .../coremod/mixin/ae2/gui/MixinAEBaseGui.java | 50 +++++++++++++++- .../mixin/ae2/gui/MixinGuiCraftAmount.java | 59 ------------------- .../integration/mek/GasTooltipHelper.java | 24 ++++++++ src/main/resources/mixins.ae2fc.json | 1 - 5 files changed, 74 insertions(+), 62 deletions(-) delete mode 100644 src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinGuiCraftAmount.java create mode 100644 src/main/java/com/glodblock/github/integration/mek/GasTooltipHelper.java diff --git a/build.gradle b/build.gradle index d44becbb3..03a45218e 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ plugins { id 'java-library' id 'maven-publish' id 'org.jetbrains.gradle.plugin.idea-ext' version '1.1.9' - id 'com.gtnewhorizons.retrofuturagradle' version '1.4.1' + id 'com.gtnewhorizons.retrofuturagradle' version '1.4.9' id 'org.jetbrains.changelog' version '2.2.1' } diff --git a/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinAEBaseGui.java b/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinAEBaseGui.java index 20e845049..70041c250 100644 --- a/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinAEBaseGui.java +++ b/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinAEBaseGui.java @@ -1,18 +1,66 @@ package com.glodblock.github.coremod.mixin.ae2.gui; +import appeng.api.storage.data.IAEFluidStack; import appeng.client.gui.AEBaseGui; +import appeng.client.gui.implementations.GuiCraftAmount; import appeng.core.sync.packets.PacketInventoryAction; import appeng.helpers.InventoryAction; +import com.glodblock.github.common.item.fake.FakeItemRegister; +import com.glodblock.github.integration.mek.GasTooltipHelper; +import com.glodblock.github.loader.FCItems; +import com.glodblock.github.util.ModAndClassUtil; +import com.glodblock.github.util.UtilClient; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import java.util.Collections; + @Mixin(AEBaseGui.class) -public class MixinAEBaseGui { +public abstract class MixinAEBaseGui { @WrapOperation(method = {"mouseClickMove", "handleMouseClick"}, at = @At(value = "NEW", target = "(Lappeng/helpers/InventoryAction;IJ)Lappeng/core/sync/packets/PacketInventoryAction;",ordinal = 0, remap = false)) protected PacketInventoryAction writeMouseButton(final InventoryAction action, final int slot, final long id, final Operation original) { return original.call(action, slot, action == InventoryAction.PICKUP_OR_SET_DOWN ? 0L : 1L); } + + @WrapOperation( + method = "drawScreen", + at = @At( + value = "INVOKE", + target = "Lappeng/client/gui/AEBaseGui;renderHoveredToolTip(II)V" + ) + ) + private void wrapRenderHoveredToolTip(AEBaseGui instance, int mouseX, int mouseY, Operation original) { + if (instance instanceof GuiCraftAmount) { + Slot slot = instance.getSlotUnderMouse(); + + if (UtilClient.getMouseItem().isEmpty() && slot != null && slot.getHasStack()) { + ItemStack item = slot.getStack(); + + if (item.getItem() == FCItems.FLUID_DROP) { + IAEFluidStack fluidStack = FakeItemRegister.getAEStack(item); + if (fluidStack != null) { + instance.drawHoveringText( + Collections.singletonList(fluidStack.getFluidStack().getLocalizedName()), + mouseX, + mouseY + ); + return; + } + } + + if (ModAndClassUtil.GAS) { + if (GasTooltipHelper.handleGasTooltip(instance, item, mouseX, mouseY)) { + return; + } + } + } + } + + original.call(instance, mouseX, mouseY); + } } \ No newline at end of file diff --git a/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinGuiCraftAmount.java b/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinGuiCraftAmount.java deleted file mode 100644 index 17a61b5f7..000000000 --- a/src/main/java/com/glodblock/github/coremod/mixin/ae2/gui/MixinGuiCraftAmount.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.glodblock.github.coremod.mixin.ae2.gui; - -import appeng.api.storage.data.IAEFluidStack; -import appeng.client.gui.AEBaseGui; -import appeng.client.gui.implementations.GuiCraftAmount; -import com.glodblock.github.common.item.fake.FakeItemRegister; -import com.glodblock.github.integration.mek.FCGasItems; -import com.glodblock.github.loader.FCItems; -import com.glodblock.github.util.ModAndClassUtil; -import com.glodblock.github.util.UtilClient; -import net.minecraft.inventory.Container; -import net.minecraft.inventory.Slot; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.Optional; -import org.spongepowered.asm.mixin.Intrinsic; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; - -import java.util.Collections; - -@Mixin(GuiCraftAmount.class) -public abstract class MixinGuiCraftAmount extends AEBaseGui { - public MixinGuiCraftAmount(final Container container) { - super(container); - } - - @Intrinsic - protected void renderHoveredToolTip(final int mouseX, final int mouseY) { - final Slot slot = this.getSlotUnderMouse(); - if (UtilClient.getMouseItem().isEmpty() && slot != null) { - if (slot.getHasStack()) { - final var item = slot.getStack(); - if (item.getItem() == FCItems.FLUID_DROP) { - final IAEFluidStack fluidStack = FakeItemRegister.getAEStack(item); - if (fluidStack != null) { - this.drawHoveringText(Collections.singletonList(fluidStack.getFluidStack().getLocalizedName()), mouseX, mouseY); - return; - } - } - if (ModAndClassUtil.GAS && item.getItem() == FCGasItems.GAS_DROP) { - if (rendererGas(item, mouseX, mouseY)) return; - } - } - } - - super.renderHoveredToolTip(mouseX, mouseY); - } - - @Unique - @Optional.Method(modid = "mekeng") - private boolean rendererGas(final ItemStack item, final int mouseX, final int mouseY) { - final Object gs = FakeItemRegister.getStack(item); - if (gs != null) { - this.drawHoveringText(Collections.singletonList(UtilClient.getGasDisplayName(gs)), mouseX, mouseY); - return true; - } - return false; - } -} \ No newline at end of file diff --git a/src/main/java/com/glodblock/github/integration/mek/GasTooltipHelper.java b/src/main/java/com/glodblock/github/integration/mek/GasTooltipHelper.java new file mode 100644 index 000000000..f22ed96fc --- /dev/null +++ b/src/main/java/com/glodblock/github/integration/mek/GasTooltipHelper.java @@ -0,0 +1,24 @@ +package com.glodblock.github.integration.mek; + +import com.glodblock.github.common.item.fake.FakeItemRegister; +import com.glodblock.github.util.UtilClient; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.Optional; + +import java.util.Collections; + +public class GasTooltipHelper { + + @Optional.Method(modid = "mekeng") + public static boolean handleGasTooltip(GuiContainer gui, ItemStack item, int mouseX, int mouseY) { + if (item.getItem() == FCGasItems.GAS_DROP) { + Object gs = FakeItemRegister.getStack(item); + if (gs != null) { + gui.drawHoveringText(Collections.singletonList(UtilClient.getGasDisplayName(gs)), mouseX, mouseY); + return true; + } + } + return false; + } +} diff --git a/src/main/resources/mixins.ae2fc.json b/src/main/resources/mixins.ae2fc.json index 0c121bf71..d5aa50d13 100644 --- a/src/main/resources/mixins.ae2fc.json +++ b/src/main/resources/mixins.ae2fc.json @@ -28,7 +28,6 @@ "client": [ "ae2.gui.MixinAEBaseGui", "ae2.gui.MixinGuiCellWorkbench", - "ae2.gui.MixinGuiCraftAmount", "ae2.gui.MixinGuiCrafting", "ae2.gui.MixinGuiCraftingStatus", "ae2.gui.MixinGuiMEMonitorable"