From 9ad1c8e82a379c483aaf154a7d32be0318e97640 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 21 Jan 2024 23:32:40 +0700 Subject: [PATCH] Micro optimize combinedcontainer stack iterator for best case scenario --- .../ru/dbotthepony/mc/otm/container/CombinedContainer.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt index 36e2aa9d8..992139a7a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/container/CombinedContainer.kt @@ -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.containerSlot 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.filter import ru.dbotthepony.mc.otm.core.collect.flatMap @@ -154,6 +155,9 @@ class CombinedContainer(containers: Stream>>) : IM } override fun iterator(nonEmpty: Boolean): Iterator { + if (notFullCoverage.isEmpty()) + return fullCoverage.iterator().flatMap { it.iterator(nonEmpty) } + return concatIterators( fullCoverage.iterator().flatMap { it.iterator(nonEmpty) }, notFullCoverage.values.iterator().flatMap { it.iterator() }.map { it.item }.let { if (nonEmpty) it.filter { it.isNotEmpty } else it }