From 07d698aeb56cc40c25db7299cd99b54211d81bf5 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Wed, 26 Jul 2023 12:12:28 +0700 Subject: [PATCH] Update IPatternStorage pattern signature --- .../entity/matter/PatternStorageBlockEntity.kt | 18 ++++++++++-------- .../otm/capability/matter/IPatternStorage.kt | 4 ++-- .../mc/otm/item/matter/CreativePatternItem.kt | 2 +- .../mc/otm/item/matter/PatternStorageItem.kt | 5 +++-- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt index 81f4d9375..222f0d67c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/matter/PatternStorageBlockEntity.kt @@ -17,7 +17,11 @@ import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block import ru.dbotthepony.mc.otm.block.entity.MatteryDeviceBlockEntity import ru.dbotthepony.mc.otm.capability.matter.* +import ru.dbotthepony.mc.otm.container.stream import ru.dbotthepony.mc.otm.core.collect.iterator +import ru.dbotthepony.mc.otm.core.filterNotNull +import ru.dbotthepony.mc.otm.core.isNotEmpty +import ru.dbotthepony.mc.otm.core.orNull import ru.dbotthepony.mc.otm.graph.matter.SimpleMatterNode import ru.dbotthepony.mc.otm.registry.MBlockEntities import java.util.ArrayList @@ -94,14 +98,12 @@ class PatternStorageBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : return PatternStorageMenu(containerID, inventory, this) } - override val patterns: Stream get() { - val streams = ArrayList>() - - for (provider in this.container.iterator(MatteryCapability.PATTERN)) { - streams.add(provider.second.patterns) - } - - return Streams.concat(*streams.toTypedArray()) + override val patterns: Stream get() { + return container.stream() + .filter { it.isNotEmpty } + .map { it.getCapability(MatteryCapability.PATTERN).orNull() } + .filterNotNull() + .flatMap { it.patterns } } override val patternCapacity: Int get() { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/IPatternStorage.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/IPatternStorage.kt index 4730b3291..0eecae475 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/IPatternStorage.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/matter/IPatternStorage.kt @@ -13,9 +13,9 @@ import kotlin.math.roundToInt interface IPatternStorage { /** - * It must return new stream each time + * Patterns stored in this pattern storage */ - val patterns: Stream + val patterns: Stream fun findPatterns(item: Item): Collection { return findPatterns { item == it.item } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/CreativePatternItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/CreativePatternItem.kt index b07ed0744..b06eb053f 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/CreativePatternItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/CreativePatternItem.kt @@ -28,7 +28,7 @@ class CreativePatternItem : Item(Properties().rarity(Rarity.EPIC).stacksTo(1)) { private object Patterns : IPatternStorage, ICapabilityProvider { private val resolver = LazyOptional.of { this } - override val patterns: Stream + override val patterns: Stream get() = MatterManager.map.keys.stream().map { PatternState(UUID(34783464838L, 4463458382L + ForgeRegistries.ITEMS.getID(it)), it, 1.0) } override val patternCapacity: Int diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/PatternStorageItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/PatternStorageItem.kt index 03924bd0a..6358a8258 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/PatternStorageItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/matter/PatternStorageItem.kt @@ -16,6 +16,7 @@ import net.minecraft.world.level.Level import net.minecraftforge.common.capabilities.Capability import ru.dbotthepony.mc.otm.core.TranslatableComponent import ru.dbotthepony.mc.otm.capability.matter.* +import ru.dbotthepony.mc.otm.core.filterNotNull import ru.dbotthepony.mc.otm.core.nbt.map import java.util.* import java.util.stream.Stream @@ -108,9 +109,9 @@ class PatternStorageItem : Item { return if (cap == MatteryCapability.PATTERN) resolver.cast() else LazyOptional.empty() } - override val patterns: Stream get() { + override val patterns: Stream get() { return stack.tag?.map("otm_patterns") { it: ListTag -> - it.stream().map { PatternState.deserializeNBT(it) }.filter { it != null } as Stream + it.stream().map { PatternState.deserializeNBT(it) }.filterNotNull() } ?: Stream.empty() }