From c2f931eefcdcf988b6e8732a82c15d7cfd958edd Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Sat, 6 Sep 2025 22:33:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A7=BD=E4=BD=8D=E6=B8=B2=E6=9F=93=E5=B8=83?= =?UTF-8?q?=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/gui/PageLayoutContext.java | 36 +++++++++++++++++++ .../client/gui/GuiExPatternProviderMixin.java | 30 ++++++++++++++++ .../resources/extendedae_plus.mixins.json | 1 + 3 files changed, 67 insertions(+) create mode 100644 src/main/java/com/extendedae_plus/client/gui/PageLayoutContext.java diff --git a/src/main/java/com/extendedae_plus/client/gui/PageLayoutContext.java b/src/main/java/com/extendedae_plus/client/gui/PageLayoutContext.java new file mode 100644 index 0000000..7cf88f0 --- /dev/null +++ b/src/main/java/com/extendedae_plus/client/gui/PageLayoutContext.java @@ -0,0 +1,36 @@ +package com.extendedae_plus.client.gui; + +public final class PageLayoutContext { + private static final ThreadLocal ACTIVE = ThreadLocal.withInitial(() -> false); + private static final ThreadLocal CURRENT_PAGE = ThreadLocal.withInitial(() -> 0); + + private PageLayoutContext() {} + + public static void enable(int page) { + ACTIVE.set(true); + CURRENT_PAGE.set(page); + } + + public static void disable() { + ACTIVE.set(false); + } + + public static boolean isActive() { + Boolean b = ACTIVE.get(); + return b != null && b; + } + + public static int getCurrentPage() { + Integer i = CURRENT_PAGE.get(); + return i != null ? i : 0; + } + + public static void withPage(int page, Runnable action) { + enable(page); + try { + action.run(); + } finally { + disable(); + } + } +} diff --git a/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java index 028fcb9..5c1f520 100644 --- a/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/extendedae/client/gui/GuiExPatternProviderMixin.java @@ -4,8 +4,10 @@ import appeng.client.gui.Icon; import appeng.client.gui.implementations.PatternProviderScreen; import appeng.client.gui.style.ScreenStyle; import appeng.menu.SlotSemantics; +import appeng.menu.slot.AppEngSlot; import com.extendedae_plus.NewIcon; import com.extendedae_plus.api.ExPatternButtonsAccessor; +import com.extendedae_plus.api.ExPatternPageAccessor; import com.extendedae_plus.config.ModConfigs; import com.glodblock.github.extendedae.client.button.ActionEPPButton; import com.glodblock.github.extendedae.client.gui.GuiExPatternProvider; @@ -162,6 +164,8 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen { @@ -189,6 +193,8 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen= base && i < end; + s.setActive(enabled); + } + } + } catch (Throwable ignored) {} + } + } \ No newline at end of file diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index fd56479..1255c8c 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -27,6 +27,7 @@ "ae2.client.gui.AEBaseScreenMixin", "ae2.client.gui.PatternEncodingTermScreenMixin", "ae2.client.gui.PatternProviderScreenMixin", + "ae2.client.gui.SlotGridLayoutMixin", "jei.EncodePatternTransferHandlerMixin", "jei.AE2JeiEncodePatternTransferHandlerMixin", "ae2.accessor.AEBaseScreenAccessor",