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",