Actualizado:

Qué cambió

Hasta la 1.20.4, los datos extra de un objeto iban en un único bloque NBT {...}. Desde la 1.20.5, el nombre, los encantamientos, la durabilidad, etc. son componentes separados que se escriben entre [...] justo después del ID del objeto.

Hasta 1.20.4 (NBT)1.20.5+ (componentes)
Dónde{ } tras el ID[ ] justo tras el ID
Separador:=
EncantamientosEnchantments:[{id:"sharpness",lvl:5}]enchantments={sharpness:5} (1.21.5+)
IrrompibleUnbreakable:1bunbreakable={}
Nombredisplay:{Name:'...'}custom_name=...

El mismo /give en los dos formatos

# Hasta 1.20.4
/give @p diamond_sword{Enchantments:[{id:"sharpness",lvl:5}],Unbreakable:1b} 1
# 1.21.5+
/give @p diamond_sword[enchantments={sharpness:5},unbreakable={}] 1

Entre 1.20.5 y 1.21.4 hay más diferencias, como enchantments={levels:{sharpness:5}}. En lugar de seguirlas a mano, elige tu versión en el generador de /give.

Por qué los componentes son mejores

Entidades y bloques siguen usando NBT

Solo los objetos pasaron a componentes. Los datos de criaturas en /summon (como {NoAI:1b}) y los datos de bloques, como el contenido de un cofre, siguen siendo NBT. Los objetos que lleva una criatura dentro de ese NBT usan la forma de componentes.

/summon zombie ~ ~ ~ {NoAI:1b}

Ver cómo se guarda un objeto

/data get entity @s SelectedItem

En Java esto muestra el ID y los componentes del objeto que tienes en la mano, un buen modelo para escribir /give.

Bedrock Edition

Este cambio solo afecta a Java. El /give de Bedrock acepta una cantidad, un valor de dato y un pequeño bloque JSON para unos pocos campos como can_destroy.

Preguntas frecuentes

Comprueba tu comando

El Command Error Doctor (en inglés) revisa en tu navegador los errores de sintaxis más comunes.