feat: Add skull parser

This commit is contained in:
Linnea Gräf
2025-05-04 15:40:08 +02:00
parent 3743ae88d9
commit cea5cd65cc
5 changed files with 93 additions and 4 deletions

View File

@@ -10,6 +10,7 @@ import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import moe.nea.firmament.util.parseDashlessUUID
import moe.nea.firmament.util.parsePotentiallyDashlessUUID
object DashlessUUIDSerializer : KSerializer<UUID> {
override val descriptor: SerialDescriptor =
@@ -17,10 +18,7 @@ object DashlessUUIDSerializer : KSerializer<UUID> {
override fun deserialize(decoder: Decoder): UUID {
val str = decoder.decodeString()
if ("-" in str) {
return UUID.fromString(str)
}
return parseDashlessUUID(str)
return parsePotentiallyDashlessUUID(str)
}
override fun serialize(encoder: Encoder, value: UUID) {

View File

@@ -3,6 +3,12 @@ package moe.nea.firmament.util
import java.math.BigInteger
import java.util.UUID
fun parsePotentiallyDashlessUUID(unknownFormattedUUID: String): UUID {
if ("-" in unknownFormattedUUID)
return UUID.fromString(unknownFormattedUUID)
return parseDashlessUUID(unknownFormattedUUID)
}
fun parseDashlessUUID(dashlessUuid: String): UUID {
val most = BigInteger(dashlessUuid.substring(0, 16), 16)
val least = BigInteger(dashlessUuid.substring(16, 32), 16)