Guides / Commands & Data

/attribute: базовое значение против модификаторов, и почему ваше постоянно сбрасывается

Установка базового значения постоянна, а установка модификатора — нет, если только вы не выберете неверную операцию. Три операции, порядок их применения и ловушка слотов.

/attribute выглядит как одна команда с тремя подкомандами. На самом деле это две разные системы, которые случайно имеют одно и то же название, и их смешивание является причиной постоянного сброса значений.

Базовое значение против модификатора

/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
  • base set перезаписывает собственное значение сущности. Оно сохраняется при перезагрузках и не удаляется ничем, кроме другого base set.
  • modifier add накладывает временную корректировку сверху. У него есть идентификатор, и его можно удалить по этому идентификатору.

Если ваше изменение исчезает при повторном входе, вы использовали модификатор, и что-то его удалило. Если ваше изменение не исчезает, вы использовали base set и вам нужно base reset.

Три операции и порядок их применения

ОперацияЧто делаетПрименяется
add_valueзначение + nпервой
add_multiplied_baseзначение + (база × n)второй
add_multiplied_totalтекущая сумма × (1 + n)последней

Порядок фиксирован и имеет значение. Начиная с базового значения 20, затем add_value 10 и add_multiplied_total 0.5:

20 → 30 → 45          not  20 → 30 → 30 + 10 = 40

add_multiplied_base всегда умножает исходную базу, а не текущую сумму — поэтому две такие операции складываются аддитивно, а не умножаются.

Идентификаторы модификаторов теперь имеют пространства имен

В старых версиях использовался UUID. Современные версии используют идентификатор с пространством имен:

/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value

Добавление второго модификатора с тем же идентификатором заменяет первый, а не складывается с ним. Это предполагаемый способ обновления баффа — вам не нужно сначала его удалять.

Модификаторы снаряжения находятся на предмете, а не на сущности

Бонус к урону зачарованного меча — это компонент предмета attribute_modifiers, и он применяется только тогда, когда предмет находится в правильном слоте:

/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
  operation:"add_value",slot:"mainhand",id:"my:bonus"}]]

slot является обязательным и является обычной ошибкой. Опустите его, и модификатор будет применяться в каждом слоте, так что меч в вашем инвентаре будет баффать вас, пока он там лежит.

Допустимые слоты: mainhand, offhand, head, chest, legs, feet, armor, body, any.

Чтение значения обратно

/attribute @s minecraft:max_health get

возвращает базовое значение, а не эффективную сумму. Чтобы получить сумму, включая модификаторы, используйте execute store result на табло и прочитайте его.

Создайте любой из этих вариантов — включая форму компонента предмета с установленным слотом — в Конструкторе команд для сущностей и боя.

Команды существ и боя →

More guides

Browse all →

Нужны другие инструменты для Minecraft?

Набор генераторов, просмотрщиков и конвертеров прямо в браузере — всё бесплатно.