aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/util/json/FirmCodecs.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/util/json/FirmCodecs.kt')
-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))
+}