diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt index 1b2ed459e..879dad5d7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/storage/StorageInterfaces.kt @@ -39,7 +39,6 @@ import ru.dbotthepony.mc.otm.storage.ItemStorageStack import ru.dbotthepony.mc.otm.storage.StorageStack import java.math.BigInteger import java.util.* -import java.util.stream.Stream import kotlin.collections.ArrayList abstract class AbstractStorageImportExport( @@ -143,25 +142,25 @@ class StorageImporterBlockEntity( val wrapped = ItemStorageStack(stack) val view = cell.graph.getVirtualComponent(StorageStack.ITEMS) - val inserted = view.insertStack(wrapped, true) - if (inserted == wrapped) return stack + val leftover = view.insertStack(wrapped, true) + if (leftover == wrapped) return stack val required = StorageStack.ITEMS.energyPerInsert(wrapped) if (energy.extractEnergy(required, true) == required) { if (!simulate) { - val inserted2 = view.insertStack(wrapped, false) + val leftover2 = view.insertStack(wrapped, false) - if (inserted == inserted2) { + if (leftover == leftover2) { energy.extractEnergy(required, false) - return inserted.toItemStack() + return leftover.toItemStack() } else { - energy.extractEnergy(StorageStack.ITEMS.energyPerInsert(inserted2), false) - return inserted2.toItemStack() + energy.extractEnergy(StorageStack.ITEMS.energyPerInsert(leftover2), false) + return leftover2.toItemStack() } } - return inserted.toItemStack() + return leftover.toItemStack() } return stack @@ -208,10 +207,13 @@ class StorageImporterBlockEntity( if (extracted.isEmpty || !filter.match(extracted)) { lastSlot++ } else { - val accepted = acceptItem(extracted, true) - val extracted2 = target.extractItem(lastSlot, accepted.count, false) - acceptItem(extracted2, false) - nextTick += INTERVAL * 4 + val leftover = acceptItem(extracted, true) + + if (leftover.count != extracted.count) { + val extracted2 = target.extractItem(lastSlot, extracted.count - leftover.count, false) + acceptItem(extracted2, false) + nextTick += INTERVAL * 4 + } } }