Micro optimize combinedcontainer stack iterator for best case scenario
This commit is contained in:
parent
8ebc611c7c
commit
9ad1c8e82a
@ -16,6 +16,7 @@ import net.minecraft.world.item.ItemStack
|
|||||||
import ru.dbotthepony.mc.otm.container.util.IContainerSlot
|
import ru.dbotthepony.mc.otm.container.util.IContainerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.util.containerSlot
|
import ru.dbotthepony.mc.otm.container.util.containerSlot
|
||||||
import ru.dbotthepony.mc.otm.container.util.iterator
|
import ru.dbotthepony.mc.otm.container.util.iterator
|
||||||
|
import ru.dbotthepony.mc.otm.container.util.slotIterator
|
||||||
import ru.dbotthepony.mc.otm.core.collect.concatIterators
|
import ru.dbotthepony.mc.otm.core.collect.concatIterators
|
||||||
import ru.dbotthepony.mc.otm.core.collect.filter
|
import ru.dbotthepony.mc.otm.core.collect.filter
|
||||||
import ru.dbotthepony.mc.otm.core.collect.flatMap
|
import ru.dbotthepony.mc.otm.core.collect.flatMap
|
||||||
@ -154,6 +155,9 @@ class CombinedContainer(containers: Stream<Pair<Container, Iterable<Int>>>) : IM
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun iterator(nonEmpty: Boolean): Iterator<ItemStack> {
|
override fun iterator(nonEmpty: Boolean): Iterator<ItemStack> {
|
||||||
|
if (notFullCoverage.isEmpty())
|
||||||
|
return fullCoverage.iterator().flatMap { it.iterator(nonEmpty) }
|
||||||
|
|
||||||
return concatIterators(
|
return concatIterators(
|
||||||
fullCoverage.iterator().flatMap { it.iterator(nonEmpty) },
|
fullCoverage.iterator().flatMap { it.iterator(nonEmpty) },
|
||||||
notFullCoverage.values.iterator().flatMap { it.iterator() }.map { it.item }.let { if (nonEmpty) it.filter { it.isNotEmpty } else it }
|
notFullCoverage.values.iterator().flatMap { it.iterator() }.map { it.item }.let { if (nonEmpty) it.filter { it.isNotEmpty } else it }
|
||||||
|
Loading…
Reference in New Issue
Block a user