From bccf0bf4c925f25496cbe90cd8e3819c96228fb2 Mon Sep 17 00:00:00 2001 From: GaLi <3096147684@qq.com> Date: Sat, 9 Aug 2025 02:42:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8C=89=E9=92=AE=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E6=9C=89=E7=BA=BF=E7=BB=88=E7=AB=AF=E7=9A=84=E6=A0=BC?= =?UTF-8?q?=E5=AD=90=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- .../ContainerExPatternTerminalMixin.java | 32 ++++++++++++++++ .../mixin/SlotGridLayoutMixin.java | 38 +++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java create mode 100644 src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java diff --git a/.gitignore b/.gitignore index f9db07c..f33e946 100644 --- a/.gitignore +++ b/.gitignore @@ -86,7 +86,7 @@ classes/ *.zip # Reference source code (should not be tracked) -# ExtendedAE-1.20-1.4.2-forge/ +ExtendedAE-1.20-1.4.2-forge/ GTLCore/ # Gradle wrapper (optional - some prefer to commit this) diff --git a/src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java b/src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java new file mode 100644 index 0000000..b22205a --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/ContainerExPatternTerminalMixin.java @@ -0,0 +1,32 @@ +package com.extendedae_plus.mixin; + +import appeng.menu.guisync.GuiSync; +import com.glodblock.github.extendedae.container.ContainerExPatternTerminal; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ContainerExPatternTerminal.class) +public abstract class ContainerExPatternTerminalMixin { + + @GuiSync(11452) + @Unique + public boolean hidePatternSlots = false; + + @Unique + public boolean isHidePatternSlots() { + return this.hidePatternSlots; + } + + @Unique + public void setHidePatternSlots(boolean hide) { + this.hidePatternSlots = hide; + } + + @Unique + public void toggleHidePatternSlots() { + this.hidePatternSlots = !this.hidePatternSlots; + } +} \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java b/src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java new file mode 100644 index 0000000..4d2bb52 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/SlotGridLayoutMixin.java @@ -0,0 +1,38 @@ +package com.extendedae_plus.mixin; + +import appeng.client.gui.layout.SlotGridLayout; +import appeng.client.Point; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(SlotGridLayout.class) +public abstract class SlotGridLayoutMixin { + + @Unique + private static final int SLOTS_PER_PAGE = 36; + + @Inject(method = "getRowBreakPosition", at = @At("HEAD"), cancellable = true, remap = false) + private static void onGetRowBreakPosition(int x, int y, int semanticIdx, int cols, CallbackInfoReturnable cir) { + // 只处理BREAK_AFTER_9COLS布局 + if (cols != 9) { + return; + } + + // 计算当前页码 + int currentPage = semanticIdx / SLOTS_PER_PAGE; + + // 计算在当前页中的位置 + int slotInPage = semanticIdx % SLOTS_PER_PAGE; + int row = slotInPage / 9; // 0-3 + int col = slotInPage % 9; // 0-8 + + // 计算目标位置(始终在前4行) + int targetX = x + col * 18; + int targetY = y + row * 18; + + cir.setReturnValue(new Point(targetX, targetY)); + } +} \ No newline at end of file