Verwendung und Grenzen
Kodiert Komponenten deterministisch. Ausrüstung und benutzerdefinierte Unterschiede dürfen nicht für besseres Stapeln entfernt werden. Die Transfergrößengrenze gilt weiterhin.
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()
}
}
Quelle
src/main/kotlin/dev/nebulastorage/api/platform/CanonicalComponents.kt; editorial/de.json
43b4d12d69e6033c24fa8c39dac383ef2429b446