From 53945a8247b5f1a125b2279238c644a5952613d0 Mon Sep 17 00:00:00 2001 From: GaLi <133291877+GaLicn@users.noreply.github.com> Date: Tue, 26 Aug 2025 21:40:13 +0800 Subject: [PATCH] 2 --- .../mixin/extendedae/GuiExPatternTerminalMixin.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java index 218603d..b4d33dc 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/GuiExPatternTerminalMixin.java @@ -10,6 +10,8 @@ import appeng.client.gui.widgets.AETextField; import appeng.client.gui.widgets.IconButton; import appeng.menu.AEBaseMenu; import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.Tooltip; @@ -18,6 +20,8 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.Shadow; @@ -252,12 +256,12 @@ public abstract class GuiExPatternTerminalMixin extends AEBaseScreen Object face = info.getClass().getMethod("face").invoke(info); // 可能为 null(方块型供应器) Object playerWorld = info.getClass().getMethod("playerWorld").invoke(info); - long posLong = (long) pos.getClass().getMethod("asLong").invoke(pos); - Object rl = playerWorld.getClass().getMethod("location").invoke(playerWorld); // ResourceLocation - String dimStr = (String) rl.getClass().getMethod("toString").invoke(rl); + // 避免对 MC 类进行反射,使用强制类型转换后直接调用方法(由 Forge 运行时重映射保证) + long posLong = ((BlockPos) pos).asLong(); + String dimStr = ((ResourceKey) playerWorld).location().toString(); int faceOrd = -1; if (face != null) { - faceOrd = (int) face.getClass().getMethod("ordinal").invoke(face); + faceOrd = ((Direction) face).ordinal(); } // 发送 CGenericPacket("open_ui", [posLong, dim, face])