修修修

This commit is contained in:
GaLicn 2025-08-18 00:13:57 +08:00
parent 03398381c8
commit 624d5c67cd

View File

@ -1000,27 +1000,42 @@ public class ExtendedAEPatternUploadUtil {
if (accessMenu == null) { if (accessMenu == null) {
return false; return false;
} }
PatternContainer container = getPatternContainerById(accessMenu, providerId); // 先确定目标容器名称用于同名回退
if (container == null || !container.isVisibleInTerminal()) { String targetName = getProviderDisplayName(providerId, accessMenu);
return false; // 构建尝试顺序先指定ID其次同名的其他ID
} java.util.List<Long> tryIds = new java.util.ArrayList<>();
InternalInventory inv = container.getTerminalPatternInventory(); tryIds.add(providerId);
if (inv == null || inv.size() <= 0) { try {
return false; java.util.List<Long> all = getAllProviderIds(accessMenu);
} for (Long id : all) {
if (id == null || id == providerId) continue;
var filtered = new FilteredInternalInventory(inv, new ExtendedAEPatternFilter()); String name = getProviderDisplayName(id, accessMenu);
ItemStack toInsert = stack.copy(); if (name != null && name.equals(targetName)) {
ItemStack remain = filtered.addItems(toInsert); tryIds.add(id);
if (remain.getCount() < toInsert.getCount()) { }
int inserted = toInsert.getCount() - remain.getCount(); }
stack.shrink(inserted); } catch (Throwable ignored) {}
if (stack.isEmpty()) {
encodedSlot.set(ItemStack.EMPTY); // 按顺序逐个尝试插入
} else { for (Long id : tryIds) {
encodedSlot.set(stack); PatternContainer c = getPatternContainerById(accessMenu, id);
if (c == null || !c.isVisibleInTerminal()) continue;
InternalInventory inv = c.getTerminalPatternInventory();
if (inv == null || inv.size() <= 0) continue;
var filtered = new FilteredInternalInventory(inv, new ExtendedAEPatternFilter());
ItemStack toInsert = stack.copy();
ItemStack remain = filtered.addItems(toInsert);
if (remain.getCount() < toInsert.getCount()) {
int inserted = toInsert.getCount() - remain.getCount();
stack.shrink(inserted);
if (stack.isEmpty()) {
encodedSlot.set(ItemStack.EMPTY);
} else {
encodedSlot.set(stack);
}
return true;
} }
return true;
} }
return false; return false;
} }
@ -1119,20 +1134,36 @@ public class ExtendedAEPatternUploadUtil {
return false; return false;
} }
InternalInventory inv = container.getTerminalPatternInventory(); // 以名称为键同名供应器依次尝试 index 指定的再同名的其他
if (inv == null || inv.size() <= 0) return false; String targetName = getProviderDisplayName(container);
var filtered = new FilteredInternalInventory(inv, new ExtendedAEPatternFilter()); java.util.List<PatternContainer> tryList = new java.util.ArrayList<>();
ItemStack toInsert = stack.copy(); tryList.add(container);
ItemStack remain = filtered.addItems(toInsert); try {
if (remain.getCount() < toInsert.getCount()) { for (PatternContainer c : list) {
int inserted = toInsert.getCount() - remain.getCount(); if (c == null || c == container) continue;
stack.shrink(inserted); String name = getProviderDisplayName(c);
if (stack.isEmpty()) { if (name != null && name.equals(targetName)) {
encodedSlot.set(ItemStack.EMPTY); tryList.add(c);
} else { }
encodedSlot.set(stack); }
} catch (Throwable ignored) {}
for (PatternContainer c : tryList) {
InternalInventory inv = c.getTerminalPatternInventory();
if (inv == null || inv.size() <= 0) continue;
var filtered = new FilteredInternalInventory(inv, new ExtendedAEPatternFilter());
ItemStack toInsert = stack.copy();
ItemStack remain = filtered.addItems(toInsert);
if (remain.getCount() < toInsert.getCount()) {
int inserted = toInsert.getCount() - remain.getCount();
stack.shrink(inserted);
if (stack.isEmpty()) {
encodedSlot.set(ItemStack.EMPTY);
} else {
encodedSlot.set(stack);
}
return true;
} }
return true;
} }
return false; return false;
} }