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": [