diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/Savetables.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/Savetables.kt index c8e474cf8..238f42d84 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/Savetables.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/Savetables.kt @@ -41,38 +41,38 @@ class Savetables : INBTSerializable { fun validate() } - inline fun , reified T : Tag> stateful(getter: Supplier, name: String): Stateful { + inline fun , reified T : Tag?> stateful(getter: Supplier, name: String): Stateful { return stateful(getter, name, T::class.java) } - inline fun , reified T : Tag> stateful(getter: V, name: String): Stateful { + inline fun , reified T : Tag?> stateful(getter: V, name: String): Stateful { return stateful(getter, name, T::class.java) } - inline fun , reified T : Tag> stateful(getter: KProperty0, name: String = getter.name): Stateful { + inline fun , reified T : Tag?> stateful(getter: KProperty0, name: String = getter.name): Stateful { return stateful(getter, name, T::class.java) } - inline fun , reified T : Tag> stateful(values: Collection, name: String): ImmutableList> { + inline fun , reified T : Tag?> stateful(values: Collection, name: String): ImmutableList> { val iterator = values.iterator() return immutableList(values.size) { stateful(iterator.next(), "${name}_$it", T::class.java) } } - fun , T : Tag> stateful(getter: Supplier, name: String, type: Class): Stateful { + fun , T : Tag?> stateful(getter: Supplier, name: String, type: Class): Stateful { return Stateful(getter, name, type) .withSerializer { it, l -> it.serializeNBT(l) } .withDeserializer { v, t, l -> v.deserializeNBT(l, t) } } - fun , T : Tag> stateful(getter: V, name: String, type: Class): Stateful { + fun , T : Tag?> stateful(getter: V, name: String, type: Class): Stateful { return Stateful({ getter }, name, type) .withSerializer { it, l -> it.serializeNBT(l) } .withDeserializer { v, t, l -> v.deserializeNBT(l, t) } } - fun , T : Tag> stateful(getter: KProperty0, name: String = getter.name, type: Class): Stateful { + fun , T : Tag?> stateful(getter: KProperty0, name: String = getter.name, type: Class): Stateful { return Stateful(getter, name, type) .withSerializer { it, l -> it.serializeNBT(l) } .withDeserializer { v, t, l -> v.deserializeNBT(l, t) } @@ -302,7 +302,7 @@ class Savetables : INBTSerializable { } } - inner class Stateful(private val prop: Supplier, override val name: String, override val type: Class) : Entry { + inner class Stateful(private val prop: Supplier, override val name: String, override val type: Class) : Entry { constructor(field: KProperty0, name: String = field.name, type: Class) : this(field::get, name, type) init { @@ -312,7 +312,7 @@ class Savetables : INBTSerializable { } private var serializer: ((V, HolderLookup.Provider) -> T?)? = null - private var deserializer: ((V, T, HolderLookup.Provider) -> Unit)? = null + private var deserializer: ((V, T & Any, HolderLookup.Provider) -> Unit)? = null private var resetter: ((V) -> Unit)? = null fun withSerializer(serializer: (V, HolderLookup.Provider) -> T?): Stateful { @@ -320,7 +320,7 @@ class Savetables : INBTSerializable { return this } - fun withDeserializer(deserializer: (V, T, HolderLookup.Provider) -> Unit): Stateful { + fun withDeserializer(deserializer: (V, T & Any, HolderLookup.Provider) -> Unit): Stateful { this.deserializer = deserializer return this }