Fixed duplication bug with autocrafting and External Storages. Fixes #2021

This commit is contained in:
raoulvdberge
2018-10-14 18:48:13 +02:00
parent 071537120b
commit da7f0473da
2 changed files with 1 additions and 14 deletions

View File

@@ -10,6 +10,7 @@
- Fixed oredict autocrafting sometimes reporting that a craftable item is missing (raoulvdberge)
- Fixed fluid autocrafting without item inputs locking when there's not enough space for the fluids (raoulvdberge)
- Fixed Grid "last changed" date not changing when using clear button or JEI transfer (raoulvdberge)
- Fixed duplication bug with autocrafting and External Storages (raoulvdberge)
- Removed handling of reusable items in autocrafting, to avoid problems (raoulvdberge)
- You can no longer start a crafting task if it has missing items or fluids (raoulvdberge)

View File

@@ -70,31 +70,17 @@ public class StorageExternalItem implements IStorageExternal<ItemStack> {
} else if (cached.isEmpty() && !actual.isEmpty()) {
// If the cached is empty and the actual isn't, we added this item
network.getItemStorageCache().add(actual, actual.getCount(), false, true);
// When we use an interface + crafting upgrade + external storage combo, we don't want the crafting task
// to think we inserted twice.
if (!isConnectedToInterface()) {
network.getCraftingManager().track(actual, actual.getCount());
}
} else if (cached.isEmpty() && actual.isEmpty()) {
// If they're both empty, nothing happens
} else if (!API.instance().getComparer().isEqualNoQuantity(cached, actual)) {
// If both items mismatch, remove the old and add the new
network.getItemStorageCache().remove(cached, cached.getCount(), true);
network.getItemStorageCache().add(actual, actual.getCount(), false, true);
if (!isConnectedToInterface()) {
network.getCraftingManager().track(actual, actual.getCount());
}
} else if (cached.getCount() != actual.getCount()) {
int delta = actual.getCount() - cached.getCount();
if (delta > 0) {
network.getItemStorageCache().add(actual, delta, false, true);
if (!isConnectedToInterface()) {
network.getCraftingManager().track(actual, delta);
}
} else {
network.getItemStorageCache().remove(actual, Math.abs(delta), true);
}