Update IPatternStorage pattern signature

This commit is contained in:
DBotThePony 2023-07-26 12:12:28 +07:00
parent 1e2611fd2e
commit 07d698aeb5
Signed by: DBot
GPG Key ID: DCC23B5715498507
4 changed files with 16 additions and 13 deletions

View File

@ -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<out PatternState> get() {
val streams = ArrayList<Stream<out PatternState>>()
for (provider in this.container.iterator(MatteryCapability.PATTERN)) {
streams.add(provider.second.patterns)
}
return Streams.concat(*streams.toTypedArray())
override val patterns: Stream<PatternState> get() {
return container.stream()
.filter { it.isNotEmpty }
.map { it.getCapability(MatteryCapability.PATTERN).orNull() }
.filterNotNull()
.flatMap { it.patterns }
}
override val patternCapacity: Int get() {

View File

@ -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<out PatternState>
val patterns: Stream<PatternState>
fun findPatterns(item: Item): Collection<PatternState> {
return findPatterns { item == it.item }

View File

@ -28,7 +28,7 @@ class CreativePatternItem : Item(Properties().rarity(Rarity.EPIC).stacksTo(1)) {
private object Patterns : IPatternStorage, ICapabilityProvider {
private val resolver = LazyOptional.of<IPatternStorage> { this }
override val patterns: Stream<out PatternState>
override val patterns: Stream<PatternState>
get() = MatterManager.map.keys.stream().map { PatternState(UUID(34783464838L, 4463458382L + ForgeRegistries.ITEMS.getID(it)), it, 1.0) }
override val patternCapacity: Int

View File

@ -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<out PatternState> get() {
override val patterns: Stream<PatternState> get() {
return stack.tag?.map("otm_patterns") { it: ListTag ->
it.stream().map { PatternState.deserializeNBT(it) }.filter { it != null } as Stream<out PatternState>
it.stream().map { PatternState.deserializeNBT(it) }.filterNotNull()
} ?: Stream.empty()
}