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 ru.dbotthepony.mc.otm.storage.StorageStack
|
||||||
import java.math.BigInteger
|
import java.math.BigInteger
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.stream.Stream
|
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
|
|
||||||
abstract class AbstractStorageImportExport<T>(
|
abstract class AbstractStorageImportExport<T>(
|
||||||
@ -143,25 +142,25 @@ class StorageImporterBlockEntity(
|
|||||||
val wrapped = ItemStorageStack(stack)
|
val wrapped = ItemStorageStack(stack)
|
||||||
|
|
||||||
val view = cell.graph.getVirtualComponent(StorageStack.ITEMS)
|
val view = cell.graph.getVirtualComponent(StorageStack.ITEMS)
|
||||||
val inserted = view.insertStack(wrapped, true)
|
val leftover = view.insertStack(wrapped, true)
|
||||||
if (inserted == wrapped) return stack
|
if (leftover == wrapped) return stack
|
||||||
|
|
||||||
val required = StorageStack.ITEMS.energyPerInsert(wrapped)
|
val required = StorageStack.ITEMS.energyPerInsert(wrapped)
|
||||||
|
|
||||||
if (energy.extractEnergy(required, true) == required) {
|
if (energy.extractEnergy(required, true) == required) {
|
||||||
if (!simulate) {
|
if (!simulate) {
|
||||||
val inserted2 = view.insertStack(wrapped, false)
|
val leftover2 = view.insertStack(wrapped, false)
|
||||||
|
|
||||||
if (inserted == inserted2) {
|
if (leftover == leftover2) {
|
||||||
energy.extractEnergy(required, false)
|
energy.extractEnergy(required, false)
|
||||||
return inserted.toItemStack()
|
return leftover.toItemStack()
|
||||||
} else {
|
} else {
|
||||||
energy.extractEnergy(StorageStack.ITEMS.energyPerInsert(inserted2), false)
|
energy.extractEnergy(StorageStack.ITEMS.energyPerInsert(leftover2), false)
|
||||||
return inserted2.toItemStack()
|
return leftover2.toItemStack()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return inserted.toItemStack()
|
return leftover.toItemStack()
|
||||||
}
|
}
|
||||||
|
|
||||||
return stack
|
return stack
|
||||||
@ -208,12 +207,15 @@ class StorageImporterBlockEntity(
|
|||||||
if (extracted.isEmpty || !filter.match(extracted)) {
|
if (extracted.isEmpty || !filter.match(extracted)) {
|
||||||
lastSlot++
|
lastSlot++
|
||||||
} else {
|
} else {
|
||||||
val accepted = acceptItem(extracted, true)
|
val leftover = acceptItem(extracted, true)
|
||||||
val extracted2 = target.extractItem(lastSlot, accepted.count, false)
|
|
||||||
|
if (leftover.count != extracted.count) {
|
||||||
|
val extracted2 = target.extractItem(lastSlot, extracted.count - leftover.count, false)
|
||||||
acceptItem(extracted2, false)
|
acceptItem(extracted2, false)
|
||||||
nextTick += INTERVAL * 4
|
nextTick += INTERVAL * 4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (nextTick <= 0) {
|
if (nextTick <= 0) {
|
||||||
nextTick = INTERVAL
|
nextTick = INTERVAL
|
||||||
|
Loading…
Reference in New Issue
Block a user