feat: 中键选取后ae中没有库存且可合成则跳转到下单界面

This commit is contained in:
C-H716 2025-11-22 00:37:32 +08:00
parent b3350e38e3
commit 8941eab3dc

View File

@ -8,6 +8,9 @@ import appeng.api.storage.StorageHelper;
import appeng.items.tools.powered.WirelessCraftingTerminalItem;
import appeng.items.tools.powered.WirelessTerminalItem;
import appeng.me.helpers.PlayerSource;
import appeng.menu.locator.MenuLocators;
import appeng.menu.me.crafting.CraftAmountMenu;
import com.extendedae_plus.menu.locator.CuriosItemLocator;
import com.extendedae_plus.util.wireless.WirelessTerminalLocator;
import com.extendedae_plus.util.wireless.WirelessTerminalLocator.LocatedTerminal;
import de.mari_023.ae2wtlib.terminal.WTMenuHost;
@ -165,8 +168,32 @@ public class PickFromWirelessC2SPacket {
}
long extracted = StorageHelper.poweredExtraction(energy, storage, targetKey, space, new PlayerSource(player));
if (extracted <= 0) {
return;
// 1. 网络里为 0
// 2. 主手当前是空的 OR 主手拿的不是这个物品
// 3. 这个物品可以被 AE2 合成
if (extracted == 0) {
ItemStack mainHandItem = player.getMainHandItem();
boolean handIsEmpty = mainHandItem.isEmpty();
boolean handIsDifferentItem = !handIsEmpty && !AEItemKey.of(mainHandItem).equals(targetKey);
if (handIsEmpty || handIsDifferentItem) {
var craftingService = grid.getCraftingService();
if (craftingService.isCraftable(targetKey)) {
// 主手为空一组
if (curiosSlotId != null && curiosIndex >= 0) {
CraftAmountMenu.open(player, new CuriosItemLocator(curiosSlotId, curiosIndex), targetKey, 64);
} else {
var hand = located.getHand();
int slot = located.getSlotIndex();
if (hand != null) {
CraftAmountMenu.open(player, MenuLocators.forHand(player, hand), targetKey, 64);
} else if (slot >= 0) {
CraftAmountMenu.open(player, MenuLocators.forInventorySlot(slot), targetKey, 64);
}
}
return; // 打开界面后直接结束不执行后面的放物品逻辑
}
}
}
if (placeToMainHand) {