snbt/nbt (like) decoder/decoder
data that follows snbt/nbt standard can be parsed by this package,
however, data can be handled by this package may not be a a valid snbt string / data,
e.g. [123, abc] is illegal snbt string (snbt requires all element in list have same type, you can enable it a decode.go, line 125)
data mapping (especially list/slice/array):
tagByte -> int8
tagShort -> int16
tagInt -> int32
tagLong -> int64
tagFloat -> int32
tagDouble -> int64
tagByteArray -> []int8
tagString -> string
tagList -> []any
tagCompound -> map[string]any
tagIntArray -> []int32
tagLongArray -> []int64
other types can use caster/mapping (e.g. caster.DefaultCaster/ caster.MapNBT) to convert
there are some magic code (e.g. tokens/number/core) generated by gen_code using package fa (https://github.com/OmineDev/fa)