aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/util/json
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-11-27 15:57:02 +0100
committerLinnea Gräf <nea@nea.moe>2024-11-27 16:05:16 +0100
commit9df1f12970dafdbf4cb13c76c1df1caed66f4a59 (patch)
tree68ad724801f6999ae64167c70a7adcdabd572d4f /src/main/kotlin/util/json
parent139fa705b36b845759cff9318191ff1cca526f2a (diff)
downloadFirmament-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')
-rw-r--r--src/main/kotlin/util/json/FirmCodecs.kt20
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))
+}