Используется для изменения или чтения атрибутов .
Синтаксис [ ]
attribute get [] Возвращает общее значение указанного атрибута. attribute base get [] Возвращает базовое значение указанного атрибута. attribute base set Заменяет базовое значение указанного атрибута заданным значением. attribute modifier add (add|multiply|multiply_base) Добавляет модификатор атрибута с указанными свойствами, если модификатор с таким же UUID уже не существует. attribute modifier remove Удаляет модификатор атрибута с указанным UUID. attribute modifier value get [] Возвращает значение модификатора с указанным UUID.
Аргументы [ ]
Сущность, к которой применяется атрибут . Только игроки, стойки для доспехов и мобы имеют атрибуты. Должно быть имя игрока, целевой селектор или UUID . И целевой селектор должен быть однотипным.
Число, на которое умножается значение перед сохранением с помощью команды. /execute Должен быть Число в формате с плавающей запятой двойной точности .
Атрибут и где его можно использовать
- —
- A — F
- a — f
- 0 — 9
Задает имя модификатора . Должна быть строка. И это должно быть цитируемой фразой, которая является либо одно словом (допустимые символы: — , + , . , _ , A — Z , a — z и 0 — 9 ) или двойными кавычками.
Задает используемое значение. Должен быть Число в формате с плавающей запятой двойной точности .
Результат [ ]
любой | аргументы указаны неверно | Неразборчивый |
не удается разрешить игроку, стойке для доспехов или мобу | Не смогли | |
атрибут не существует (например, у объекта игрока нет minecraft:horse.jump_strength ) | ||
. modifier add . | модификатор с указанным uuid уже присутствует | |
. modifier remove . modifier value get . |
модификатор с указанным uuid не существует | |
любой | При успехе | Изменяет или возвращает значение атрибута. |
Выход [ ]
любой | Версия Java | В случае неудачи | 0 | 0 | 0 |
. get [] | При успехе | 1 | 1 | Значение атрибута (умноженное на , затем преобразованное в int) | |
. base get [] | При успехе | 1 | 1 | Базовое значение атрибута (умноженное на , затем преобразованное в int) | |
. modifier value get [] | При успехе | 1 | 1 | Значение модификатора (умноженное на , затем приведенное к int) | |
. base set . . modifier add . . modifier remove . |
При успехе | 1 | 1 | 1 |
Новая Команда — /attribute [Снапшот 20w17a]
Примеры [ ]
История [ ]
Добавлен /attribute . |
Источник: minecraftpages.wiki
Команда attribute в майнкрафт
Атрибуты это система усилений и ослаблений, которая стала доступна в Minecraft начиная с версии 13w16a. По сути это скрытые свойства для игроков и некоторых мобов, позволяющие изменять их основные характеристики. Атрибуты так же имеют модификаторы, которые позволяют управлять силой их эффекта. Если применить атрибуты к предмету, то они тоже будут влиять на параметры если этот предмет одет или если его держат в руках. При этом атрибуты и модификаторы можно создавать напрямую в игре без использования сторонних программ редактирования NBT информации.
Каждый атрибут контролирует одно из свойств существа, на которого он применен. Атрибуты описываются их именем (Name), а так же всегда имеют базовое значение (Base). Помимо этого атрибуты могут иметь любое количество дополнительных модификаторов.
У каждого атрибута так же существует значение по умолчанию, которое игра применяет к создаваемому существу если атрибут не задан явно, и минимум с максимумом, причем все это жестко задано в коде игры. Атрибуты будут изменяться всеми модификаторами, но если полученное значение выйдет за пределы максимума или минимума, то оно будет исправлено до ближайшего допустимого. Максимум и минимум всегда считается включая крайние значения, то есть, например, от 0 до 2048 включительно.
С общими принципами разобрались, теперь давайте посмотрим какие возможные значения у нас существуют. Начнем непосредственно с атрибутов.
Атрибут | Описание |
generic.maxHealth | Максимальный уровень здоровья для игрока или моба, то есть уровень здоровья, до которого существо может быть излечено в обычных условиях. Измеряется в половинках сердца (![]() |
Базовое значение: 20
Минимум: 0
Максимум: 2147483647
Базовое значение: 32
Минимум: 0
Максимум: 2048
Базовое значение: 0.0
Минимум: 0.0
Максимум: 1.0
Базовое значение: 0.7
Минимум: 0.0
Максимум: ∞
Базовое значение: 1
Минимум: 0
Максимум: ∞
Базовое значение: 0.7
Минимум: 0.0
Максимум: 2.0
Базовое значение: 0.0
Минимум: 0.0
Максимум: 1.0
Следует отметить, что если игра встречает незнакомый атрибут, то по умолчанию его значение приравнивается к 0.0, минимальное значение так же определяется как 0.0, а максимальное считается не ограниченным.
Итак, с атрибутами мы более-менее разобрались, настало время присмотреться к модификаторам. Их несколько больше и с ними все сложнее. Если атрибуты напрямую задают конкретные значения для отдельных параметров, то модификаторы изменяют эти параметры по определенным формулам, увеличивая либо уменьшая их.
При этом получившиеся значения в любом случае не могут выйти за пределы установленного в игре минимума и максимума. Как и у атрибутов, у модификаторов есть имя, однако оно не определяет поведение самого модификатора. Вместо этого поведение определяется выполняемой операцией. У модификаторов также существует их значение и их UUID.
Самым главным при работе с модификаторами будет операция, которая выполняется с указанными значениями. По сути именно она показывает как именно изменится атрибут, на который мы ссылаемся. Операций существует всего три, названия нумеруются числами от 0 до 2 и, по сути, являются операциями «+/- количество», «+/- количество процентов (сложение)» и «+/- количество процентов (умножение)». С математической точки зрения работают они следующим образом:
Операция 0: Просуммировать X и значение.
Операция 1: Просуммировать Y и X*значение.
Операция 2: Просуммировать Y и Y*значение.
Данные операции всегда выполняются в порядке 0 » 1 » 2, а под X и Y подразумевается следующее. В начале расчетов переменной X присваивается текущее значение атрибута, а затем выполняются все операции типа 0. После этого полученный результат присваивается переменной Y и выполняются сначала операции типа 1, а затем операции типа 2.
Как уже было сказано выше, имя модификатора не влияет на его поведение, учитывается только операция и значение. Что касается системы UUID (уникальных идентификаторов), то здесь все несколько сложнее. Лично я не вдавался глубоко в тему, но грубо говоря все выглядит так. Определенные операции жестко вшиты в игру под четко заданными UUID.
Соответственно когда мы выполняем добавление своего модификатора в игру, то этот идентификатор создается «на лету» и каждый раз меняется. Соответственно можно использовать в командах не UUID, как нам следует делать, если мы используем ванильные модификаторы, а нужно использовать конструкцию типа UUIDLeast. UUIDMost. которая задаст базовые параметры идентификаторов для нашего нового модификатора. Объясняя на пальцах — если мы повторяем уже существующий в игре эффект, то можем сослаться на его UUID (который можно найти, например, на Wiki), а если делаем что-то свое, то просто разрешаем создать новый в определенном диапазоне.
Думается мне, что это все еще достаточно сложно понять с первого раза, поэтому систему модификаторов вам придется изучать методом проб и ошибок. Ну и в качестве неплохого старта для вас я приведу пример того, как в Minecraft создать алмазную мотыгу с уникальными свойствами. Команда для ее выдачи игроку будет выглядеть приблизительно следующим образом:
В таком виде строчка слишком сложна для вашего восприятия? Ну что же, давайте попытаемся разложить все по полочкам и разбить команду на отдельные блоки. Если вы еще вдруг не в курсе, то фигурные скобки определяют границы блоков данных, а квадратные скобки — массивы. Итак, вот что у нас получится:
Вы можете задаться очевидным вопросом можно ли использовать несколько модификаторов в пределах одного предмета и ответом будет — разумеется. Если вы повнимательнее присмотритесь к записи, то увидите, что AttributeModifiers представляет из себя массив, поскольку внутренности заключены в квадратные скобки. Соответственно мы можем перечислить в этом массиве несколько наших модификаторов, разделяя серии фигурных скобок запятыми так:
AttributeModifiers:[параметры модиф.1>,параметры модиф.2>. параметры модиф.N>]
Надеюсь, что изучив данную статью и приведенный пример вы теперь и сами сможете окончательно разобраться с данной темой, которая многих в первый раз вводит в ступор. Удачного создания эпических предметов в Minecraft!
Источник: www.gkrond.ru
[Гайд] Рассматриваем системные атрибуты
Итак, для редактирования уже заложенных в игру данных, нам потребуется умение работать с NBT тегами. О том, какой они имеют синтаксис, я писал отдельно. Отлично. Теперь давайте разберём сами атрибуты — скрытые свойства мобов и предметов.
generic.maxHealth — атрибут, отвечающий за максимальное количество здоровья у моба. Измеряется в половниках сердец.
generic.followRange — атрибут, отвечающий за то, как далеко моб сможет следить за игроками. Измеряется в блоках.
generic.knockbackResistance — атрибут, отвечающий за сопротивление эффекту отбрасывания от атак, взрывов и попадания снарядов. Значение 1.0 даёт полный иммунитет к урону.
generic.movementSpeed — атрибут, отвечающий за скорость перемещения моба. Не стоит забывать, что на моба может влиять и эффект скорости.
generic.attackDamage — атрибут, отвечающий за урон, наносимый мобом. Измеряется в половниках сердец.
horse.jumpStrength — атрибут, отвечающий за высоту прыжков лошади. Может применяться только к лошадям.
zombie.spawnReinforcements — атрибут, отвечающий за вероятность того, что при атаке зомби призовёт ещё одного зомби на помощь. Применяется только к зомби.
Изменение атрибутов производится с помощью массива AttributeModifiers и параметров AttributeName (Название атрибута в системе), Name (Любое название атрибута), Amount (Значение), Operation (Алгоритм, по которому будет рассчитываться финальное значение. Описано на WIKI. Это тема отдельного урока.), UUIDMost и UUIDLeast (Расположение параметров в системе. Выбирайте широкий диапазон.).
Источник: ru-minecraft.ru