Fix storage importer

This commit is contained in:
DBotThePony 2023-08-12 12:16:31 +07:00
parent dba7f3ad8d
commit d3ea51928f
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -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<T>(
@ -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
}
}
}