Руководства / Команды и данные
Команда /give после компонентов данных: что заменило NBT-теги
В 1.20.5 NBT предметов был заменён компонентами данных, но большинство сниппетов /give в интернете всё ещё написаны по-старому. Вот соответствие между знакомыми вам тегами и компонентами, которые работают сейчас.
Если вы вставите команду /give из старого руководства и игра отклонит её с синтаксической ошибкой, значит команда написана под формат NBT до 1.20.5. Данные предметов перешли в компоненты данных (data components), и старый блок {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={floats:[3]} |
AttributeModifiers:[...] | attribute_modifiers |
display:{color:...} | dyed_color |
SkullOwner | profile |
Три ловушки
- Кавычки.
custom_nameпринимает текстовый компонент, записанный как SNBT, поэтому простое имя — этоcustom_name="Skybreaker". Старая формаcustom_name='"Skybreaker"'из руководств эпохи 1.20.5 теперь задаёт имя предмета вместе с видимыми кавычками. - Удаление значения по умолчанию. Поставьте префикс
!, чтобы убрать компонент, который у предмета обычно есть —[!attribute_modifiers]даёт меч вообще без бонуса к урону. - В Bedrock ничего этого нет. Bedrock
/giveпо-прежнему использует собственную модель значений данных и компонентов; строка компонентов Java там не сработает.
Генератор /give сам записывает форму с компонентами и показывает результат для обеих версий, так что вы можете скопировать ту, которая подходит вашему серверу.