From 695d6561e73eb5bcf81ad090344592c000c826f4 Mon Sep 17 00:00:00 2001 From: xinyihl <1012737146@qq.com> Date: Wed, 27 Aug 2025 11:53:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A0=B7=E6=9D=BF=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=85=88=E4=BD=BF=E7=94=A8JEI=E4=B9=A6=E7=AD=BE?= =?UTF-8?q?=E7=89=A9=E5=93=81=E3=80=81=E6=B5=81=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../integration/jei/JeiRuntimeProxy.java | 19 ++++++++++ .../EncodePatternTransferHandlerMixin.java | 2 +- .../mixin/ae2/EncodingHelperMixin.java | 35 +++++++++++++++++++ .../jei/accessor/BookmarkOverlayAccessor.java | 12 +++++++ .../resources/extendedae_plus.mixins.json | 4 ++- 6 files changed, 71 insertions(+), 3 deletions(-) rename src/main/java/com/extendedae_plus/mixin/{jei => ae2}/EncodePatternTransferHandlerMixin.java (98%) create mode 100644 src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java create mode 100644 src/main/java/com/extendedae_plus/mixin/jei/accessor/BookmarkOverlayAccessor.java diff --git a/gradle.properties b/gradle.properties index b3b0a9f..7085cf3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,7 +16,7 @@ glodium_version=5006780 ae2_version=15.4.2 guideme_version=20.1.7 wireless_terminals_version=5162352 -jei_version=15.0.0.12 +jei_version=15.19.5.99 applied_flux_version=5329825 mega_cells_version=5320730 jade_version=4768593 diff --git a/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java b/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java index 9bac388..ce96613 100644 --- a/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java +++ b/src/main/java/com/extendedae_plus/integration/jei/JeiRuntimeProxy.java @@ -1,12 +1,17 @@ package com.extendedae_plus.integration.jei; +import com.extendedae_plus.mixin.jei.accessor.BookmarkOverlayAccessor; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.ingredients.ITypedIngredient; import mezz.jei.api.runtime.IBookmarkOverlay; import mezz.jei.api.runtime.IIngredientListOverlay; import mezz.jei.api.runtime.IJeiRuntime; +import mezz.jei.gui.bookmarks.BookmarkList; +import mezz.jei.gui.overlay.elements.IElement; import javax.annotation.Nullable; +import java.util.Collections; +import java.util.List; import java.util.Optional; /** @@ -113,4 +118,18 @@ public final class JeiRuntimeProxy { } return ""; } + + /** + * 获取JEI书签列表 + */ + public static List> getBookmarkList() { + IJeiRuntime rt = RUNTIME; + if (rt == null) return Collections.emptyList(); + IBookmarkOverlay bookmarkOverlay = rt.getBookmarkOverlay(); + if (bookmarkOverlay instanceof BookmarkOverlayAccessor accessor) { + BookmarkList bookmarkList = accessor.eap$getBookmarkList(); + return bookmarkList.getElements().stream().map(IElement::getTypedIngredient).toList(); + } + return Collections.emptyList(); + } } diff --git a/src/main/java/com/extendedae_plus/mixin/jei/EncodePatternTransferHandlerMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/EncodePatternTransferHandlerMixin.java similarity index 98% rename from src/main/java/com/extendedae_plus/mixin/jei/EncodePatternTransferHandlerMixin.java rename to src/main/java/com/extendedae_plus/mixin/ae2/EncodePatternTransferHandlerMixin.java index 820b3ce..c71d818 100644 --- a/src/main/java/com/extendedae_plus/mixin/jei/EncodePatternTransferHandlerMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/EncodePatternTransferHandlerMixin.java @@ -1,4 +1,4 @@ -package com.extendedae_plus.mixin.jei; +package com.extendedae_plus.mixin.ae2; import appeng.integration.modules.jei.transfer.EncodePatternTransferHandler; import appeng.integration.modules.jeirei.EncodingHelper; diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java new file mode 100644 index 0000000..d8c3bbe --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java @@ -0,0 +1,35 @@ +package com.extendedae_plus.mixin.ae2; + +import appeng.api.stacks.AEFluidKey; +import appeng.api.stacks.AEItemKey; +import appeng.api.stacks.AEKey; +import appeng.integration.modules.jeirei.EncodingHelper; +import appeng.menu.me.common.GridInventoryEntry; +import appeng.menu.me.common.MEStorageMenu; +import com.extendedae_plus.integration.jei.JeiRuntimeProxy; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.forge.ForgeTypes; +import mezz.jei.api.ingredients.ITypedIngredient; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Comparator; +import java.util.List; +import java.util.Map; + +@Mixin(EncodingHelper.class) +public class EncodingHelperMixin { + // 客户端:注入优先使用JEI书签的物品,流体 + @Inject(method = "getIngredientPriorities", at = @At("TAIL"), cancellable = true, remap = false) + private static void epp$addJeiIngredientPriorities(MEStorageMenu menu, Comparator comparator, CallbackInfoReturnable> cir){ + Map result = cir.getReturnValue(); + List> list = JeiRuntimeProxy.getBookmarkList(); + for (ITypedIngredient ingredient : list) { + ingredient.getIngredient(VanillaTypes.ITEM_STACK).ifPresent(itemStack -> result.put(AEItemKey.of(itemStack), Integer.MAX_VALUE)); + ingredient.getIngredient(ForgeTypes.FLUID_STACK).ifPresent(fluidStack -> result.put(AEFluidKey.of(fluidStack), Integer.MAX_VALUE)); + } + cir.setReturnValue(result); + } +} diff --git a/src/main/java/com/extendedae_plus/mixin/jei/accessor/BookmarkOverlayAccessor.java b/src/main/java/com/extendedae_plus/mixin/jei/accessor/BookmarkOverlayAccessor.java new file mode 100644 index 0000000..508845d --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/jei/accessor/BookmarkOverlayAccessor.java @@ -0,0 +1,12 @@ +package com.extendedae_plus.mixin.jei.accessor; + +import mezz.jei.gui.bookmarks.BookmarkList; +import mezz.jei.gui.overlay.bookmarks.BookmarkOverlay; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(BookmarkOverlay.class) +public interface BookmarkOverlayAccessor { + @Accessor("bookmarkList") + BookmarkList eap$getBookmarkList(); +} diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index e515bd3..d2ed6db 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -22,7 +22,9 @@ "extendedae.HighlightButtonMixin", "extendedae.accessor.GuiExPatternTerminalAccessor", "extendedae.accessor.GuiExPatternTerminalSlotsRowAccessor", - "jei.EncodePatternTransferHandlerMixin", + "ae2.EncodePatternTransferHandlerMixin", + "ae2.EncodingHelperMixin", + "jei.accessor.BookmarkOverlayAccessor", "hooks.ModelBakeryMixin" ], "mixins": [ From 45fe181ef8f944138c0996fdd9a01ea7e233f125 Mon Sep 17 00:00:00 2001 From: xinyihl <1012737146@qq.com> Date: Wed, 27 Aug 2025 12:12:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?JEI=E4=B9=A6=E7=AD=BE=E8=B6=8A=E9=9D=A0?= =?UTF-8?q?=E5=89=8D=E5=A1=AB=E5=85=85=E4=BC=98=E5=85=88=E7=BA=A7=E8=B6=8A?= =?UTF-8?q?=E9=AB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java index d8c3bbe..4990054 100644 --- a/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/ae2/EncodingHelperMixin.java @@ -18,6 +18,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.Comparator; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; @Mixin(EncodingHelper.class) public class EncodingHelperMixin { @@ -25,10 +26,11 @@ public class EncodingHelperMixin { @Inject(method = "getIngredientPriorities", at = @At("TAIL"), cancellable = true, remap = false) private static void epp$addJeiIngredientPriorities(MEStorageMenu menu, Comparator comparator, CallbackInfoReturnable> cir){ Map result = cir.getReturnValue(); + AtomicInteger index = new AtomicInteger(Integer.MAX_VALUE); List> list = JeiRuntimeProxy.getBookmarkList(); for (ITypedIngredient ingredient : list) { - ingredient.getIngredient(VanillaTypes.ITEM_STACK).ifPresent(itemStack -> result.put(AEItemKey.of(itemStack), Integer.MAX_VALUE)); - ingredient.getIngredient(ForgeTypes.FLUID_STACK).ifPresent(fluidStack -> result.put(AEFluidKey.of(fluidStack), Integer.MAX_VALUE)); + ingredient.getIngredient(VanillaTypes.ITEM_STACK).ifPresent(itemStack -> result.put(AEItemKey.of(itemStack), index.getAndDecrement())); + ingredient.getIngredient(ForgeTypes.FLUID_STACK).ifPresent(fluidStack -> result.put(AEFluidKey.of(fluidStack), index.getAndDecrement())); } cir.setReturnValue(result); }