July 3

[псд] Xtranims или больше возможностей и условий для анимаций.

пы.сы. Эта статья - это перевод и более понятное расписание гитхаба (https://github.com/Minecomedy/Xtranims) мода. Так как аддон был навайбкоджен, то и большая часть функций, которые я буду помечать, плохо работают или вовсе не работают.

пы.сы от 12.07.26 - Автор модификации выкатил свой собственный видео гайд о работе аддона. (https://www.youtube.com/watch?v=R87LMibh7Jo)

пы.сы.сы Статья будет время от времени обновляться, в зависимости от того, как обновится сама модификация.


Xtranims(https://modrinth.com/mod/xtranims) - свежий аддон CPM для Forge//Fabric//NeoForge от версий 1.20.1 и выше, что добавляет больше условий для анимации, такие как:
  • Фаза луны, время суток;
  • Эффект зелий;
  • Биом; (добавлю позднее)
  • Погода;
  • Статус игрока; (добавлю позднее)
  • Стат игрока (добавлю позднее);
  • Удержание предмета в руке(считывая НБТ тег предмета).
Кроме условий для анимаций, данный мод дает возможность менять цвет кубов на любой цвет во время игры без изменения модели.
Данный аддон, как и большенство других аддоно для КПМ, является клиент-сайд, из-за чего может быть установлен только у вас, а другие игроки могут не использовать его, но все равно видеть анимации.

По большей части все работает на "триггерах", прописанных в моде или добавляемые самим игроком в config/xtranims/.
Триггеры же прописываются в названии анимации. Например, moon_phase_0:werewolf_form или is_on_fire:HELP.

> Фаза луны и время суток

  • [moon_phase_0] - Full moon;
  • [moon_phase_1] - Waning Gibbous;
  • [moon_phase_2] - Last Quarter;
  • [moon_phase_3] - Waning Crescent;
  • [moon_phase_4] - New Moon;
  • [moon_phase_5] - Waxing Crescent;
  • [moon_phase_6] - First Quarter;
  • [moon_phase_7] - Waxing Gibbous;
  • (не рабочая) [time_of_day] - Определенный час игрового дня, где 0 - полночь, 6 - рассвет, 12 - день, 18 - сумерки. Ночь начинается в 13.
Визуализация фаз луны

> Эффект зелий

Для создания анимации при определенном эффекте зелья, используется шаблон "has_[название эффекта]". Названия эффектов есть на англоязычной вики.
Эффект ванильной тошноты
Но как быть с кастомными эффектами из модов? Тут чуть потруднее.
Мы должны обратиться в конфиг папку - config/xtranims/effects/ - где должны создать файл .txt формата. Например, fortune.txt Название файла и станет словом триггером для анимации - т.е будет fortune:anim_test.
Внутри же созданного файла мы должны прописать effect = mod:mod_effect
триггер на исчезновение прямоугольника у головы Стива

> Биом

  • (не рабочий) [biome_temperature] - Триггер от температуры (Value Layer);
  • [biome_is_snowy] - Температура биома < 0.15;
  • [biome_is_dry] - Температура биома > 0.9;
  • [biome_is_ocean] - Биом с названием Ocean;
  • [biome_is_desert] - Биом с названием Desert;
  • [biome_is_forest] - Биом с названием Forest;
  • [biome_is_swamp] - Биом с названием Swamp;
  • [biome_is_jungle] - Биом с названием Jungle;
  • [biome_is_savanna] - Биом с названием Savanna;
  • [biome_is_nether] - В незере;
  • [biome_is_the_end] - В энде;
  • [biome_is_underground] - При высоте Y < 0;
  • (не рабочий)[y_level] -Триггер от высоты -64 < Y < 320 (Value Layer).
Кроме заготовленных триггеров, можно добавлять свои для модовых биомов или определенных биомов. Все это пишется в config/xtranims/biomes/
Имеется два варианта использования:
Вариант А: Четкое совпадение.
biome = terralith:highlands
Вариант Б: Совпадение подстроки (любой биом, имеющий в названии определенное слово)
biome_contains = highland
biome_is_underground убирает глаза у модельки
Триггер на модовый биом manors_bounty:violet_blue_plains

> Погода

У погоды всего два триггера:

- is_raining

- is_thundering


> Статус игрока

  • is_on_fire - Игрок горит;
  • is_sprinting - Игрок бежит;
  • is_sneaking - Игрок приседает;
  • is_swimming - Игрок плывет;
  • is_underwater - Игрок под водой;
  • is_in_water - Игрок в воде;
  • is_in_lava - Игрок в лаве;
  • is_elytra_fly - Игрок летит на элитрах;
  • is_invisible - Игрок невидимый.
is_in_water в действии
is_on_fire в действии

> Стат игрока

(Не работают, да и тем более часть есть уже в ванильном КПМ функции.)

  • health_pct - Текущее количество здоровья у игрока (в процентах);
  • food_pct - Голод игрока (В процентах);
  • air_pct - Количество кислорода игрока (В процентах);
  • xp_level - Уровень игрока (До 100);
  • armor_value - Уровень брони игрока (0-20).

> Удержание предмета в руке

В моде уже имеются свою прописанные теги для предметов:
  • holding_sword - меч;
  • holding_bow - лук;
  • holding_crossbow - арбалет;
  • holding_trident - трезубец;
  • holding_shield - щит;
  • holding_axe - топор;
  • holding_pickaxe - кирка;
  • holding_shovel - лопата;
  • holding_hoe - мотыга;
  • holding_tool - любой инструмент (кирка\мотыга\топор\лопата);
  • holding_book - книга;
  • holding_food - еда;
  • holding_staff - палка;
  • main_hand_empty - основная рука пустая;
  • off_hand_empty - вторая рука пустая;
  • (не рабочий)hotbar_slot - выбранный слот инвентаря пустой.
holding_sword с анимаций, что заставляет голову игрока пропасть

(НБТ НЕ РАБОТАЕТ, ЖДИТЕ ОБНОВЛЕНИЯ МОДА У АВТОРА. ДЛЯ ГАЙДА ИСПОЛЬЗОВАЛ ЛИЧНУЮ ПЕРЕПИСАННУЮ ВЕРСИЮ)

Но, кроме заготовленных, можно и поставить свои условия. Например, название или CustomModelData на предмете.
Для этого нужно в конфиг папке - config/xtranims/animations/ - создать файл с любым триггером.txt.
Формат файла:
item = namespace:item_id Айди предмета, обязательный пункт
hand = main / off / both Опционально - рука, в которой находится предмет
nbt.path operator [value] Условия, при которых оно будет меняться. Одно или несколько, но ВСЕ должны выполняться.
Операторы
  • exists - Данный НБТ тег существует на предмете;
  • not_empty - Список\\строка не пустые(?);
  • has_enchant [id] - Предмет имеет зачарование(ванильное или модовое);
  • == [text] - Точное совпадение строки (Чувствительно к регистру(!));
  • != [text] - Строка не совпадает;
  • > [number] - Число больше
  • >= [number] - Число больше либо равно;
  • < [number] - Число меньше;
  • <= [number] - Число меньше либо равно;

Примеры использования
Алмазный меч с CustomModelData == 1001 превращается на модельке в булавку.
item = minecraft:diamond_sword
tag.CustomModelData == 1001
Предмет с ЛЮБЫМ названием превращается в дубинку DIALOGUE
item = minecraft:diamond_sword
tag.display.Name exists
также подобное работает и для любого зачарования
item = minecraft:diamond_sword
tag.Enchantments exists

> РГБ система

А тут начинается самое сложное. Создание данной фичи на модельке очень баганно и противно.
Мод добавляет кнопку, при помощи которой открывается меню, где можно менять цвета определенных элементов модели без редактирования.
Для того, чтоб сделать это в модельке, нужно у отдельного куба, покрашенного в белый(!) включить Effects\Color Filter и выбрать в нем любой цвет.
После этого(в лучшем случае, если не произойдет каких-то ужасов и фокусов из-за вайбкода мода) у вас в config\xtranims\colors\ сгенерируется файл настройки и при нажатии клавиши, что вы должны забиндить в настройках, появится вышепоказанное меню.