Команда /give после внедрения компонентов данных: что пришло на смену NBT-тегам
В версии 1.20.5 NBT-теги предметов были заменены компонентами данных, но большинство онлайн-инструкций по /give до сих пор написаны по старинке. Здесь вы найдете соответствие между привычными тегами и актуальными компонентами.
Если вы вставляете команду /give из старого руководства, а игра отвечает Unknown item tag или незаметно игнорирует ваши зачарования, значит, команда написана в формате NBT до версии 1.20.5. Данные предметов теперь хранятся в компонентах данных, и старый блок {display:{Name:...}} больше не распознается.
Изменения в структуре
old /give @p diamond_sword{display:{Name:'"Skybreaker"'},Enchantments:[{id:sharpness,lvl:5}]}
new /give @p diamond_sword[custom_name='"Skybreaker"',enchantments={sharpness:5}]
Квадратные скобки вместо фигурных. Компоненты представляют собой плоский, разделенный запятыми список, прикрепленный к ID предмета.
Самые востребованные соответствия
| Старый NBT | Компонент данных |
|---|---|
display:{Name:...} | custom_name |
display:{Lore:[...]} | lore |
Enchantments:[{id,lvl}] | enchantments={id:level} |
Unbreakable:1b | unbreakable={} |
CustomModelData:3 | custom_model_data=3 |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
Три подводных камня
- Кавычки.
custom_nameпринимает текстовый компонент в формате JSON, поэтому обычная строка
по-прежнему требует своих собственных кавычек внутри аргумента: custom_name='"Skybreaker"'.
- Удаление значения по умолчанию. Добавьте префикс
!, чтобы удалить компонент,
который обычно есть у предмета — [!attribute_modifiers] даст меч вообще без бонуса к урону.
- В Бедроке этого нет. Бедрок
/giveпо-прежнему использует свою собственную модель
значений данных и компонентов; строка Java-компонента там не будет работать.
/give Generator сам сгенерирует команду в формате компонентов и покажет результат для обеих версий, так что вы сможете скопировать ту, что подходит для вашего сервера.