Uso e vincoli
Codifica componenti in modo deterministico. Non rimuovere equipaggiamento o dati personalizzati per raggruppare oggetti. Rispetta il limite di trasferimento.
CanonicalComponents
package dev.nebulastorage.api.platform
import net.minecraft.nbt.CompoundTag
import net.minecraft.nbt.ListTag
import net.minecraft.nbt.StringTag
import net.minecraft.nbt.Tag
internal object CanonicalComponents {
const val MAX_BYTES = 8192
fun transferable(components: String): Boolean = components.toByteArray(Charsets.UTF_8).size <= MAX_BYTES
fun encode(tag: Tag): String = when (tag) {
is CompoundTag -> tag.allKeys.sorted().joinToString(",", "{", "}") { key ->
StringTag.quoteAndEscape(key) + ":" + encode(tag.get(key)!!)
}
is ListTag -> tag.joinToString(",", "[", "]", transform = ::encode)
else -> tag.toString()
}
}
Fonte
src/main/kotlin/dev/nebulastorage/api/platform/CanonicalComponents.kt; editorial/it.json
43b4d12d69e6033c24fa8c39dac383ef2429b446