中键下单失败时自动将物品名称写入搜索框

This commit is contained in:
GaLicn 2025-12-05 23:33:29 +08:00
parent dbc05f83bc
commit 28cf03bbf4

View File

@ -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();