Specify defaults for item filters
This commit is contained in:
parent
5bdaa8cc88
commit
4d44bd0f67
@ -35,6 +35,7 @@ import ru.dbotthepony.mc.otm.storage.*
|
||||
import java.math.BigInteger
|
||||
import java.util.*
|
||||
import java.util.function.Consumer
|
||||
import java.util.function.Supplier
|
||||
import java.util.stream.Stream
|
||||
|
||||
private data class SlotTuple(val slot: Int, val stack: ItemStack)
|
||||
@ -130,7 +131,7 @@ class StorageBusBlockEntity(blockPos: BlockPos, blockState: BlockState) : Matter
|
||||
}
|
||||
|
||||
init {
|
||||
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY)
|
||||
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY, Supplier { ItemFilter(MAX_FILTERS) })
|
||||
}
|
||||
|
||||
override fun setLevel(level: Level) {
|
||||
|
@ -38,6 +38,7 @@ import ru.dbotthepony.mc.otm.storage.ItemStorageStack
|
||||
import ru.dbotthepony.mc.otm.storage.StorageStack
|
||||
import java.math.BigInteger
|
||||
import java.util.*
|
||||
import java.util.function.Supplier
|
||||
|
||||
abstract class AbstractStorageImportExport(
|
||||
blockType: BlockEntityType<*>,
|
||||
@ -111,7 +112,7 @@ abstract class AbstractStorageImportExport(
|
||||
}
|
||||
|
||||
init {
|
||||
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY)
|
||||
savetables.codec(::filter, ItemFilter.CODEC, FILTER_KEY, Supplier { ItemFilter(MAX_FILTERS) })
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -207,7 +207,7 @@ class Savetables : INBTSerializable<CompoundTag?> {
|
||||
}
|
||||
}
|
||||
|
||||
fun <T : Any> codec(prop: Delegate<T>, codec: Codec<T>, name: String, default: T): Stateless<T, Tag> {
|
||||
fun <T : Any> codec(prop: Delegate<T>, codec: Codec<T>, name: String, default: Supplier<T>): Stateless<T, Tag> {
|
||||
return Stateless(prop, name, Tag::class.java)
|
||||
.withSerializer { codec.encode(prop.get(), NbtOps.INSTANCE, NbtOps.INSTANCE.empty()).getOrThrow { throw IllegalStateException("Failed to write save data for '$name': $it") } }
|
||||
.withDeserializer {
|
||||
@ -215,9 +215,9 @@ class Savetables : INBTSerializable<CompoundTag?> {
|
||||
.decode(NbtOps.INSTANCE, it)
|
||||
.resultOrPartial { LOGGER.error("Failed to read save data for '$name'", RuntimeException(it)) }
|
||||
.map { it.first }
|
||||
.orElse(default)
|
||||
.orElseGet(default)
|
||||
}
|
||||
.withDefault { default }
|
||||
.withDefault { default.get() }
|
||||
}
|
||||
|
||||
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, name: String = prop.name): Stateless<T, Tag> {
|
||||
@ -225,10 +225,22 @@ class Savetables : INBTSerializable<CompoundTag?> {
|
||||
}
|
||||
|
||||
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, name: String = prop.name, default: T): Stateless<T, Tag> {
|
||||
return codec(Delegate.Of(prop), codec, name, Supplier { default })
|
||||
}
|
||||
|
||||
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, name: String = prop.name, default: Supplier<T>): Stateless<T, Tag> {
|
||||
return codec(Delegate.Of(prop), codec, name, default)
|
||||
}
|
||||
|
||||
fun <T : Any> codec(prop: KMutableProperty0<T>, codec: Codec<T>, default: Supplier<T>): Stateless<T, Tag> {
|
||||
return codec(Delegate.Of(prop), codec, prop.name, default)
|
||||
}
|
||||
|
||||
fun vector(prop: Delegate<Vector>, name: String, default: Vector = Vector.ZERO): Stateless<Vector, Tag> {
|
||||
return codec(prop, Vector.CODEC, name, Supplier { default })
|
||||
}
|
||||
|
||||
fun vector(prop: Delegate<Vector>, name: String, default: Supplier<Vector>): Stateless<Vector, Tag> {
|
||||
return codec(prop, Vector.CODEC, name, default)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user