O comando /give depois dos componentes de dados: o que substituiu as tags NBT
A versão 1.20.5 substituiu o NBT dos itens por componentes de dados, e a maioria dos exemplos de /give que circulam por aí ainda está no formato antigo. Veja abaixo o mapeamento das tags que você conhece para os componentes que funcionam agora.
Se você cola um comando /give de um guia antigo e o jogo rejeita com erro de sintaxe, o comando está escrito no formato NBT anterior à 1.20.5. Os dados dos itens passaram para componentes de dados, e o antigo bloco {display:{Name:...}} não é mais interpretado.
O formato mudou
old /give @p diamond_sword{display:{Name:'"Skybreaker"'},Enchantments:[{id:sharpness,lvl:5}]}
new /give @p diamond_sword[custom_name="Skybreaker",enchantments={sharpness:5}]
Colchetes, não chaves. Os componentes formam uma lista simples, separada por vírgulas, logo após o id do item.
Os mapeamentos que você vai usar de verdade
| NBT antigo | Componente de dados |
|---|---|
display:{Name:...} | custom_name |
display:{Lore:[...]} | lore |
Enchantments:[{id,lvl}] | enchantments={id:level} |
Unbreakable:1b | unbreakable={} |
CustomModelData:3 | custom_model_data={floats:[3]} |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
Três armadilhas
- Aspas.
custom_namerecebe um componente de texto escrito em SNBT, então um nome simples é apenascustom_name="Skybreaker". O antigo formatocustom_name='"Skybreaker"'dos guias da época da 1.20.5 agora nomeia o item com as aspas aparecendo. - Remover um padrão. Use o prefixo
!para tirar um componente que o item normalmente tem —[!attribute_modifiers]dá uma espada sem nenhum bônus de dano. - O Bedrock não tem nada disso. O
/givedo Bedrock ainda usa seu próprio modelo de valores de dados e componentes; uma string de componentes do Java não vai funcionar lá.
O Gerador de /give monta o formato de componentes para você e mostra a saída para as duas edições, então é só copiar a que corresponde ao servidor em que você está.