Анимации
Покадровая анимация
Заголовок раздела «Покадровая анимация»Анимированное меню содержит блок frames в корне. Как только плагин видит этот блок, меню считается анимированным, а сам frames заменяет привычный items. Ниже параметры, которые добавляются к стандартным.
| Имя | Тип данных | Обязательный | Описание |
|---|---|---|---|
| onAnimStart | Объект | Нет | Действия перед началом анимации |
| onAnimEnd | Объект | Нет | Действия после завершения анимации (не работают для зацикленных анимаций) |
| loop | Boolean | Нет | Зациклить анимацию. По умолчанию false |
| frames | Список объектов | Да | Список кадров анимации |
| items | Список объектов | Нет | Список статических предметов |
Ниже пример пустого меню, готового к добавлению кадров.
title: "&eАнимированное меню"size: 3activators { command: "anim"}loop: trueframes: [ { # ... Здесь будет кадр, который добавим позже }, { # ... Второй кадр }]Формат кадра
Заголовок раздела «Формат кадра»Кадр - это единица анимации. В каждом кадре лежит список кнопок, которые попадут в инвентарь, плюс ещё несколько параметров. Их таблица ниже.
| Имя | Тип данных | Обязательный | Описание |
|---|---|---|---|
| delay | Number | Нет | Задержка в тиках перед проигрыванием кадра. По умолчанию 20 |
| clear | Boolean | Нет | Очистить инвентарь перед добавлением предметов нового кадра. По умолчанию true |
| rules | Объект | Нет | Правила проигрывания кадра |
| onStart | Объект | Нет | Действия перед проигрыванием кадра |
| onEnd | Объект | Нет | Действия после проигрывания кадра |
| items | Список объектов | Да | Список предметов для этого кадра |
Если clear: false, при смене кадра предметы из инвентаря не удаляются. Так чуть меньше нагрузки на сервер и компактнее сам файл меню.
Предметы внутри items описываются так же, как и в обычных меню.
Минимальная задержка между кадрами - 1 тик.
Если у кадра есть правила, плагин сначала проверит игрока. Не подходит - кадр просто пропускается, в инвентаре остаются предметы предыдущего.
Создание простой анимации
Заголовок раздела «Создание простой анимации»Соберём простую анимацию: предмет должен ползти из левого угла в правый. В примере используются шаблоны, но можно и без них - просто продублировать параметры в каждом кадре (так лучше не делать). Файл выглядит так:
title: "&lAnimation example"size: 1activators { command: "menu"}frames: [ { delay: 10 items: [ ${someItem} {slot: 0} ] }, { delay: 10 items: [ ${someItem} {slot: 1} ] }, { delay: 10 items: [ ${someItem} {slot: 2} ] }, { delay: 10 items: [ ${someItem} {slot: 3} ] }, { delay: 10 items: [ ${someItem} {slot: 4} ] }, { delay: 10 items: [ ${someItem} {slot: 5} ] }, { delay: 10 items: [ ${someItem} {slot: 6} ] }, { delay: 10 items: [ ${someItem} {slot: 7} ] }, { delay: 10 items: [ ${someItem} {slot: 8} ] }]
someItem { material: STONE name: "&aHello!"}В игре это выглядит так:

Предмет someItem мы размножили по 9 кадрам, каждый раз меняя слот. Поскольку clear по умолчанию true, инвентарь чистится перед каждым кадром.
Это самый простой пример. Если поиграться, можно собрать и куда более навороченные анимации.
Статические предметы
Заголовок раздела «Статические предметы»В анимированное меню можно добавить статические предметы - они не меняются, пока крутится анимация. Удобно для фона или служебных кнопок.
Статические предметы кладутся в блок items, как в обычных меню. Пример:
frames: [ # Здесь какие-то кадры]
items: [ { slot: 0 name: "Кнопка выхода" click { closeMenu: true } }]Здесь статический предмет - кнопка выхода. Пока анимация идёт, она не двигается.
Анимация головы
Заголовок раздела «Анимация головы»Плагин умеет крутить анимации головы из заранее заготовленных текстур. Делается в два шага:
- Подготовить текстуры и сложить их в кадры анимации.
- Подцепить анимацию к меню через специальный плейсхолдер.
Добавление анимации головы
Заголовок раздела «Добавление анимации головы»Каждый кадр - это отдельная голова. Сначала нужно сгенерировать все головы для будущей анимации. Удобнее всего через MineSkin. После генерации копируем ссылку на текстуру - нужное поле показано на скриншоте.

Нам нужен только хеш скина, без адреса http://textures.minecraft.net/texture/.
Когда все головы готовы и текстуры сохранены, их можно прописать в animated_heads.conf в папке плагина. Файл из коробки уже содержит одну анимацию - anim_eye, её можно сразу попробовать.
Своя анимация - это список строк где-нибудь в конфиге, по образу anim_eye. Каждый элемент списка - очередной кадр. Анимация головы всегда зациклена, держи это в голове при сборке кадров. Сохраняем файл - анимация готова, осталось привязать её к предмету.
Привязка анимации к предмету
Заголовок раздела «Привязка анимации к предмету»У любого предмета есть параметр texture. Со специальным плейсхолдером его можно использовать иначе. Пример:
items: [ { slot: 0 texture: "%hanim_:anim_eye:1%" name: "&aAnimated head" }]Вместо статической текстуры в texture мы положили плейсхолдер. На каждом тике обновления меню (параметр updateInterval) он подменяется текстурой соответствующего кадра. Пример ниже.

Цифра 1 после имени анимации - идентификатор конкретной кнопки. В пределах одного меню у каждого предмета с одной и той же анимацией идентификатор должен быть свой. Подойдёт любой текст, мы взяли просто число. Если у нескольких кнопок с одной анимацией идентификаторы совпадают, кадры будут отображаться криво.