diff --git a/src/main/java/com/extendedae_plus/network/crafting/OpenCraftFromJeiC2SPacket.java b/src/main/java/com/extendedae_plus/network/crafting/OpenCraftFromJeiC2SPacket.java index 9a4af7c..173657c 100644 --- a/src/main/java/com/extendedae_plus/network/crafting/OpenCraftFromJeiC2SPacket.java +++ b/src/main/java/com/extendedae_plus/network/crafting/OpenCraftFromJeiC2SPacket.java @@ -3,11 +3,16 @@ package com.extendedae_plus.network.crafting; import appeng.api.networking.IGrid; import appeng.api.stacks.AEKey; import appeng.api.stacks.GenericStack; +import appeng.client.gui.me.common.MEStorageScreen; import appeng.items.tools.powered.WirelessTerminalItem; import appeng.menu.locator.MenuLocators; import appeng.menu.me.crafting.CraftAmountMenu; import com.extendedae_plus.menu.locator.CuriosItemLocator; +import com.extendedae_plus.mixin.ae2.accessor.MEStorageScreenAccessor; +import com.extendedae_plus.mixin.extendedae.accessor.GuiExPatternTerminalAccessor; import com.extendedae_plus.util.wireless.WirelessTerminalLocator; +import com.glodblock.github.extendedae.client.gui.GuiExPatternTerminal; +import net.minecraft.client.Minecraft; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; @@ -67,7 +72,27 @@ public class OpenCraftFromJeiC2SPacket { // 该 Key 是否可被网络自动合成 var craftingService = grid.getCraftingService(); - if (!craftingService.isCraftable(what)) return; + if (!craftingService.isCraftable(what)){ + String name=what.getDisplayName().getString(); + if (name == null || name.isEmpty()) return; + + // 写入 AE2 终端的搜索框 + var screen = Minecraft.getInstance().screen; + if (screen instanceof MEStorageScreen me) { + try { + MEStorageScreenAccessor acc = (MEStorageScreenAccessor) me; + acc.eap$getSearchField().setValue(name); + acc.eap$setSearchText(name); // 同步到 Repo 并刷新 + } catch (Throwable ignored) { + } + }else if (screen instanceof GuiExPatternTerminal gpt) { + try { + GuiExPatternTerminalAccessor acc = (GuiExPatternTerminalAccessor) gpt; + acc.getSearchOutField().setValue(name); + }catch (Throwable ignored) {} + } + return; + } var hand = located.getHand(); int slot = located.getSlotIndex();