MC Toolkit

Руководства / Команды и данные

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

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

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

base против modifier

/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 накладывает поверх именованную поправку. Она сохраняется вместе с сущностью так же, как и базовое значение, у неё есть id, и её можно удалить по этому id.

Если ваше изменение не исчезает, значит вы либо использовали base set и вам нужен base reset, либо добавили модификатор, который нужно убрать через modifier remove <id>.

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

ОперацияЧто делаетКогда применяется
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 умножает базу после того, как прибавлены модификаторы add_value, — а не текущий итог, — поэтому два таких модификатора складываются аддитивно, а не дают сложный процент.

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

В старых версиях использовался UUID. В современных версиях используется id с пространством имён:

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

Добавление второго модификатора с тем же id завершается ошибкой «Modifier … is already present», а не накладывается поверх или заменяет его. Чтобы обновить эффект, сначала удалите его через modifier remove.

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

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

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

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

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

Как прочитать значение обратно

/attribute @s minecraft:max_health get

возвращает итоговое эффективное значение с учётом модификаторов. /attribute @s minecraft:max_health base get возвращает только базу.

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

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

Другие руководства

Смотреть все →