aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/util/json/FirmCodecs.kt
blob: d7b8f57f0c34549d898f8aee6c52c91d90959b4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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.core.UUIDUtil

object FirmCodecs {
	@JvmField
	val UUID_LENIENT_PREFER_INT_STREAM = Codec.withAlternative(UUIDUtil.CODEC, Codec.STRING.comapFlatMap(
		{
			try {
				DataResult.success(UndashedUuid.fromStringLenient(it), Lifecycle.stable())
			} catch (ex: IllegalArgumentException) {
				DataResult.error { "Invalid UUID $it: ${ex.message}" }
			}
		},
		UndashedUuid::toString))
}