diff options
author | Linnea Gräf <nea@nea.moe> | 2024-11-27 15:57:02 +0100 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-11-27 16:05:16 +0100 |
commit | 9df1f12970dafdbf4cb13c76c1df1caed66f4a59 (patch) | |
tree | 68ad724801f6999ae64167c70a7adcdabd572d4f /src/main/kotlin/util/json/FirmCodecs.kt | |
parent | 139fa705b36b845759cff9318191ff1cca526f2a (diff) | |
download | Firmament-9df1f12970dafdbf4cb13c76c1df1caed66f4a59.tar.gz Firmament-9df1f12970dafdbf4cb13c76c1df1caed66f4a59.tar.bz2 Firmament-9df1f12970dafdbf4cb13c76c1df1caed66f4a59.zip |
fix: Incorrect primary codec in lenient profile serialization
Diffstat (limited to 'src/main/kotlin/util/json/FirmCodecs.kt')
-rw-r--r-- | src/main/kotlin/util/json/FirmCodecs.kt | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/kotlin/util/json/FirmCodecs.kt b/src/main/kotlin/util/json/FirmCodecs.kt new file mode 100644 index 0000000..c0863bc --- /dev/null +++ b/src/main/kotlin/util/json/FirmCodecs.kt @@ -0,0 +1,20 @@ +package moe.nea.firmament.util.json + +import com.mojang.serialization.Codec +import com.mojang.serialization.DataResult +import com.mojang.serialization.Lifecycle +import com.mojang.util.UndashedUuid +import net.minecraft.util.Uuids + +object FirmCodecs { + @JvmField + val UUID_LENIENT_PREFER_INT_STREAM = Codec.withAlternative(Uuids.INT_STREAM_CODEC, Codec.STRING.comapFlatMap( + { + try { + DataResult.success(UndashedUuid.fromStringLenient(it), Lifecycle.stable()) + } catch (ex: IllegalArgumentException) { + DataResult.error { "Invalid UUID $it: ${ex.message}" } + } + }, + UndashedUuid::toString)) +} |