From 07b9645adf61c8b2bec2f2e27b5f45a2d7d8d0f0 Mon Sep 17 00:00:00 2001 From: GaLicn <133291877+GaLicn@users.noreply.github.com> Date: Sat, 6 Sep 2025 20:48:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +- ...2JeiEncodePatternTransferHandlerMixin.java | 49 +++++++++++++++++++ src/main/resources/extendedaeplus.mixins.json | 2 + 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/extendedae_plus/mixin/jei/AE2JeiEncodePatternTransferHandlerMixin.java diff --git a/build.gradle b/build.gradle index 4c9444c..1788c87 100644 --- a/build.gradle +++ b/build.gradle @@ -138,8 +138,7 @@ sourceSets.main.java { // AE2 相关非 accessor(已启用,需要参与编译与运行) // 其他模块的非 accessor mixin exclude 'com/extendedae_plus/mixin/ae2WTlib/**' - // 保留 mixin/jei/accessor,但排除其余 - exclude 'com/extendedae_plus/mixin/jei/*.java' + // 允许 JEI/REI 捕获混入参与编译(用于记录 lastProcessingName) // 排除顶层 mixin 文件 exclude 'com/extendedae_plus/mixin/PickFromWirelessMixin.java' } diff --git a/src/main/java/com/extendedae_plus/mixin/jei/AE2JeiEncodePatternTransferHandlerMixin.java b/src/main/java/com/extendedae_plus/mixin/jei/AE2JeiEncodePatternTransferHandlerMixin.java new file mode 100644 index 0000000..149df60 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/jei/AE2JeiEncodePatternTransferHandlerMixin.java @@ -0,0 +1,49 @@ +package com.extendedae_plus.mixin.jei; + +import appeng.integration.modules.itemlists.EncodingHelper; +import appeng.menu.me.items.PatternEncodingTermMenu; +import com.extendedae_plus.util.ExtendedAEPatternUploadUtil; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeHolder; +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 tamaized.ae2jeiintegration.integration.modules.jei.transfer.EncodePatternTransferHandler; + +/** + * 针对 AE2 JEI Integration 的转移处理器:在点击 JEI 的 "+" 将配方填入编码终端时, + * 捕获处理配方并记录一个可用于搜索的关键字,以便 ProviderSelectScreen 自动预填搜索框。 + */ +@Mixin(value = EncodePatternTransferHandler.class, remap = false) +public abstract class AE2JeiEncodePatternTransferHandlerMixin { + + @Inject(method = "transferRecipe", at = @At("HEAD"), require = 0, remap = false) + private void extendedae_plus$captureProcessingName(T menu, + Object recipeBase, + IRecipeSlotsView slotsView, + Player player, + boolean maxTransfer, + boolean doTransfer, + CallbackInfoReturnable cir) { + if (!doTransfer) return; + String name = null; + Recipe recipe = null; + if (recipeBase instanceof RecipeHolder holder) { + recipe = holder.value(); + } + if (recipe != null) { + // 仅记录处理配方(非 3x3 合成) + if (EncodingHelper.isSupportedCraftingRecipe(recipe)) return; + name = ExtendedAEPatternUploadUtil.mapRecipeTypeToSearchKey(recipe); + } else { + // 非原版 Recipe 的显示,尝试从 recipeBase 类名/包名推导关键词 + name = ExtendedAEPatternUploadUtil.deriveSearchKeyFromUnknownRecipe(recipeBase); + } + if (name != null && !name.isBlank()) { + ExtendedAEPatternUploadUtil.setLastProcessingName(name); + } + } +} diff --git a/src/main/resources/extendedaeplus.mixins.json b/src/main/resources/extendedaeplus.mixins.json index 494710b..52170ec 100644 --- a/src/main/resources/extendedaeplus.mixins.json +++ b/src/main/resources/extendedaeplus.mixins.json @@ -27,6 +27,8 @@ "ae2.client.gui.AEBaseScreenMixin", "ae2.client.gui.PatternEncodingTermScreenMixin", "ae2.client.gui.PatternProviderScreenMixin", + "jei.EncodePatternTransferHandlerMixin", + "jei.AE2JeiEncodePatternTransferHandlerMixin", "ae2.accessor.AEBaseScreenAccessor", "ae2.accessor.MEStorageScreenAccessor", "accessor.AbstractContainerScreenAccessor",