Fix storage importer
This commit is contained in:
parent
dba7f3ad8d
commit
d3ea51928f
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user