修修修
This commit is contained in:
parent
03398381c8
commit
624d5c67cd
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user