Files
Firmament/src/main/kotlin/moe/nea/firmament/util/IdentifierSerializer.kt
Linnea Gräf 3d792dbef7 Port to 1.21
2024-07-05 22:17:02 +02:00

29 lines
957 B
Kotlin

/*
* SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe>
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package moe.nea.firmament.util
import kotlinx.serialization.KSerializer
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import net.minecraft.util.Identifier
object IdentifierSerializer : KSerializer<Identifier> {
val delegateSerializer = String.serializer()
override val descriptor: SerialDescriptor
get() = SerialDescriptor("Identifier", delegateSerializer.descriptor)
override fun deserialize(decoder: Decoder): Identifier {
return Identifier.of(decoder.decodeSerializableValue(delegateSerializer))
}
override fun serialize(encoder: Encoder, value: Identifier) {
encoder.encodeSerializableValue(delegateSerializer, value.toString())
}
}