Utilisation et contraintes

Encode les composants de façon déterministe pour que des valeurs identiques aient la même identité. Ne supprimez ni équipement, ni données personnalisées pour faciliter l’empilement. Respectez la limite de taille transférable.

CanonicalComponents

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()
    }
}
Source

src/main/kotlin/dev/nebulastorage/api/platform/CanonicalComponents.kt; editorial/fr.json

43b4d12d69e6033c24fa8c39dac383ef2429b446