Nerdy's GeckoLib Plugin для Mcreator: создание анимированных сущностей, блоков и оружия.
Геколиб — пожалуй, самая популярная библиотека анимации для мододелов.
Начиная с 1.19, в Майнкрафте присутствует своя библиотека анимаций, но Геколиб пока что остаётся вне конкуренции, особенно благодаря своей простоте. Всё, что вам нужно, — это Блокбенч и желание добавить свои анимации в мод. Библиотека активно поддерживается и работает с последними версиями MCreator, так что проблем с установкой и использованием возникнуть не должно.
Начиная с 1.19, в Майнкрафте присутствует своя библиотека анимаций, но Геколиб пока что остаётся вне конкуренции, особенно благодаря своей простоте. Всё, что вам нужно, — это Блокбенч и желание добавить свои анимации в мод. Библиотека активно поддерживается и работает с последними версиями MCreator, так что проблем с установкой и использованием возникнуть не должно.
Скачать плагин можно с официального сайта: https://mcreator.net/plugin/91484/nerdys-geckolib-plugin-forge-1182-1192
Кладется в папку с плагинами, а затем подключается в рабочее пространство проекта.
Для работы с ним вам понадобится одноименный плагин для Блокбенча. Нажимаем File - Plugins - находим GeckoLib Animation Utils.
По сути, это и завершает первоначальную настройку рабочего пространства!
Создание моделей для Geckolib
После установки плагина в Блокбенч у вас появится новая категория "GeckoLib Animated Model", нажав на которую откроется окно настройки.
Model Type — тип вашей модели, который понадобится при внедрении в мод:
Entity — существа и визуальные эффекты;
Block — блоки;
Item — всё, что игрок может держать в руках (оружие, инструменты и т.п.);
Armor — броня;
Object — объекты, размещаемые на земле, или же просто объекты.
Project Name — название проекта.
Это поле можно пропустить, как и Mod ID, но можно ввести то же, что использовалось при создании проекта в MCreator. В таком случае Blockbench автоматически экспортирует модель с заполненным json-файлом. Для самого MCreator это не принципиально, но удобно.
Это поле можно пропустить, как и Mod ID, но можно ввести то же, что использовалось при создании проекта в MCreator. В таком случае Blockbench автоматически экспортирует модель с заполненным json-файлом. Для самого MCreator это не принципиально, но удобно.
Object ID — идентификатор вашего предмета или сущности.
Можно оставить пустым или ввести вручную.
Можно оставить пустым или ввести вручную.
Допустим, сегодня мы хотим создать какую-нибудь маленькую кракозябру и добавить её в мод.
Выбираем "Entity" и приступаем к работе!
Выбираем "Entity" и приступаем к работе!
В вашем распоряжении будут кубы и папки. Папки в Блокбенче — это не просто организация, они выступают как кости модели. Поэтому не стоит оставлять рабочую область заваленной кучей cube, cube, cube — это быстро станет неудобно. Рука в одной папке, нога в другой, детали в третьей. Особенно важно разделять части, которые будут анимированы — для них нужны отдельные кости (папки), чтобы Геколиб мог правильно к ним обращаться.
Для удобства лучше всего в первую очередь создавать папку-контейнер, которую обычно называют Root (Main и другие названия, кому как удобнее). Это помогает при централизации трансформаций, а так же избежать внезапных багов при внедрении модельки в мод.
Итак, предположим, модель и текстура готовы, папки настроены. Что же дальше? А дальше открываем вкладку Animate и настраиваем пивоты. Желательно, чтобы пивоты находились внутри модели и соответствовали логике костей. То есть, скажем, пивот головы не должен быть где-то в ногах — ему самое место в шее, примерно по центру нижней части головы. Пивоты рук в плечах, ног в бедре или колене, в зависимости от конструкции. Правильная настройка пивотов влияет на то, как естественно будет двигаться модель при анимации.
Подготовили модельку к анимации и приступаем к следующему этапу - их созданию. Обычно у всего живого в майнкрафте есть пул стандартных анимаций, который можно подсмотреть в самом Mcreator при создании "Animated Entity". Тыкаем, выбираем вкладку Animations и смотрим что нам нужно создать:
В зависимости от вашей задумки выбираете нужные анимации. Например, я хочу, чтобы моделька была простым, безобидным энтити-существом, которое бегает по полям и наслаждается жизнью. Для этого хватит минимум двух анимаций: idle и walk. Если существо должно атаковать — добавляем attack, если нужна красивая смерть — death. Эти же названия анимаций мы прописываем в Блокбенче при создании анимаций:
Заметка: эти названия нужны только для вашего удобства. Назвать их можно как угодно. Но, чтобы не потеряться, лучше называть их общепринято.
Тут нас интересует только Loop Mode:
Play Once — проиграть анимацию один раз;
Hold on Last Frame — остановить проигрывание анимации на последнем кадре;
Loop — постоянное проигрывание анимации.
И так, предположим, энтити готов: у нас есть модель, текстура и анимации. Теперь нам нужно это экспортировать! И тут есть свои маленькие правила.
В первую очередь нужно выгрузить GeckoLib Model, задав ей уникальное название. Я, например, назову свою модель ovechka. Обязательно следите, чтобы при экспорте файл имел расширение .geo. То есть полное имя файла — ovechka.geo. Следом экспортируем GeckoLib Animations — файл должен иметь точно такое же название, как и модель, но с расширением .animation:
ovechka.animation.
ovechka.animation.
И в последнюю очередь экспортируем текстуру — снова с тем же именем:
ovechka.png.
ovechka.png.
В итоге у меня получается три файла:
ovechka.geo — модель энтити;
ovechka.animation — её анимации;
ovechka.png — её текстура.
В вашем случае это должно быть:
[название].geo, [то же название].animation, [то же название].png
[название].geo, [то же название].animation, [то же название].png
Импорт модели из Блокбенча в Mcreator
Теперь можем смело открыть Mcreator и, если у вас правильно установлен плагин, добавленный в рабочую область, то сверху будет иконка библиотеки — там нас интересует импорт.
Там вам автоматически предложит загрузить файлы .geo и .animation, текстуру же добавляете через Ресурсы: открываем вкладку, закидываем текстуру, выбираем "Сущность"/"Entity".
Теперь нужно создать наше существо! Жмём плюсик и выбираем Animatid Entity, даём ей ID, которым называли её файлы.
Пройдёмся по окну настройки. Здесь задаются визуальные параметры и звуки вашей модели.
Имя сущности — это ID вашей сущности;
Entity model — выбор импортированного .geo-файла модели;
Текстура сущности — выбираем текстуру, ранее добавленную в ресурсы;
Entity glowing texture — текстура для светящихся элементов модели. Вы можете сделать, чтобы, например, светились только глаза — для этого загружается та же текстура, но оставляются только светящиеся участки;
Рамки-границы — настройки хитбокса и тени;
Свойства яйца призыва — определяет, как будет выглядеть яйцо призыва сущности в инвентаре;
Остальные параметры — по желанию. Например, нужен ли босс-бар, отображать ли имя над головой, какие звуки должна издавать сущность и так далее.
Следующее окно — это настройки поведения сущности. Здесь можно выбрать один из трёх типов поведения, но в большинстве случаев нас интересуют только два:
Mob — стандартный агрессивный моб;
Creature — пассивное существо.
Я хочу, чтобы моя сущность была мирной и безобидной, поэтому выбираю Creature. Ниже находятся особые атрибуты. Обычно я ими не пользуюсь, но при желании можно прочитать описание прямо в MCreator — там всё подробно объяснено.
Остальные параметры настраиваются по желанию: сколько будет здоровья у существа, можно ли оседлать, будет ли оно плавать, летать, получит ли иммунитет к определённым видам урона и т.д.
Последующие окна опциональны. Параметры данных — это добавление особой логики, например, смены текстуры. Инвентарь — наличие инвентаря у этой сущности. Триггеры — различные взаимодействия с сущностью. Нас же интересует следующая вкладка — ИИ.
ИИ — это Goal нашей сущности, то есть то, чем она будет заниматься в мире. Здесь же можно настроить, должна ли сущность уметь размножаться и приручаться. В целом, это вкладка с огромным простором для творчества, но если не хочется заморачиваться вручную, в MCreator есть готовые шаблоны поведения, которые сильно упрощают настройку:
Я тоже не хочу страдать над своей сущностью, поэтому выберу Basic passive mob. Там мое существо будет гулять, осматриваться и не будет пытаться утонуть.
Следующей вкладкой у нас идёт генерация. Если вы выбрали Creature, как и я, то не забываем здесь так же сменить тип призыва на creature. В остальном так же просто смотрит на свой вкус как нам хотелось бы, чтобы эта сущность генерировалась в мире.
Последняя нужная нам вкладка — это анимации. В столбики вписываем те же самые названия, что использовались во вкладке Animate в Блокбенче. В качестве дополнительных настроек можно указать, будет ли существо падать на бок при смерти, и будет ли оно поворачивать голову отдельно от анимации. Последняя функция довольно классная — достаточно поставить галочку и внизу вписать название кости, отвечающей за голову.
Существо в мире
И так, после настройки мы можем смело проверять наш проект. Запускаем клиент, создаём мир и выдаём себе яйцо призыва. Можно командой, а можно найти во вкладке, которую вы указывали при создании яйца призыва.
Заметка: не забываем, что первый запуск может быть дольше обычного. Не пугаемся, если боимся, что что-то зависло - просто проверяем консоль.
В конечном итоге мы получаем нашу сущность! И если все настроено правильно, то она будет отображаться, проигрывать анимации и радоваться жизни. Далее, уже исходя из поведения сущности в игре, можно будет редактировать нужные детали. Например, скорость бега, или чтобы наша сущность пыталась сбежать от нападающего, или же чтобы ударяла в ответ.
Что, если я хочу большего? Анимации, собственное поведение?
Если то, что предлагает Mcreator, нам недостаточно, то проще всего будет залезть "под капот" нашей сущности. Мы разблокируем исходный код и смотрим на то, какими Java файлами располагаем:
Entity — файл поведения существа, содержит все настройки и параметры поведения;
Model — файл модели;
Renderer — отвечает за отображение модели в игре;
biome_modifier.json — файл, отвечающий за генерацию сущности в биомах;
biome_modifier.json — файл, отвечающий за генерацию сущности в биомах;
spawn_egg.json — настройки яйца призыва.
Остальные файлы — это файлы регистрации. Их лучше не трогать без необходимости, если точно не знаете, что делаете.
Открываем файл Entity и видим перед собой большую простыню текста — это то, с чем придётся работать, если вы хотите внести изменения в модель вручную, обходя ограничения MCreator. По сути, это тот же самый код, который программа визуализирует при импорте сущности, но в случае разблокированного кода вы можете добавлять туда собственную логику.
Например, я хочу, чтобы у моей овечки было две анимации idle. Я заранее добавила вторую анимацию под названием idle_two в файл ovechka.animation. Чтобы добавить её в поведение сущности, нужна небольшая логика — в моём случае я хочу, чтобы сущность случайным образом выбирала, какую из двух анимаций ей воспроизводить.
Для этого я добавляю две новые переменные:
currentIdleAnimation - Это строковая переменная, которая хранит название выбранной idle-анимации. Если значение равно null, значит, пока анимация не выбрана.
idleAnimationTimer - Это целое число, которое считает, сколько игровых тиков (единиц времени, где 20 тиков ≈ 1 секунда) прошло с момента запуска выбранной idle-анимации.
Внутри нашей сущности уже есть метод movementPredicate - отвечает за выбор и проигрывание анимаций в зависимости от того, двигается ли сущность или стоит на месте. Там мы и будем добавлять нашу новую логику для сущности. Нам нужны: проверка движения, чтобы сбрасывать состояние idle и его анимации, и выбор idle-анимаций. После выбора анимации сразу вызывается метод thenPlay(currentIdleAnimation), который начинает воспроизведение выбранной idle-анимации.
Мы задаем порог времени для завершения анимации:
Если выбрано "idle", порог равен 20 тикам (≈1 секунда).
Если выбрано "idle_two", порог равен 60 тикам (≈3 секунды).
Это то время, которое я выставляла в таймингах в самом Блокбенче. Если поставить меньше, то анимация не будет проигрываться полностью.
Сброс и новый выбор:
Когда счетчик достигает нужного порога, происходит сброс переменных (currentIdleAnimation и idleAnimationTimer), и в том же тике сразу выбирается новая idle-анимация, которая запускается с помощью метода thenPlay.
В итоге, моя овечка в рандоме выбирает, двигать ей головой вниз или же вправо, то есть выбирает между двумя моими idle-анимациями для неё.
По такой же логике осуществляется и остальное редактирование сущности — за пределами того, что предлагает плагин или сам MCreator. Но для этого уже нужно понимать, как с этим правильно работать. Бояться что-то испортить не стоит: если что-то пойдёт не так, всегда можно заблокировать код обратно, и тогда MCreator сбросит все ваши изменения, заменив их своими параметрами, что вы выставляли при импорте.
В целом, добавлять своих существ, особенно если у них простая логика — совсем несложно. Даже если требуется что-то посложнее, в MCreator есть дополнительные настройки, такие как поведение и триггеры, с которыми вполне можно управиться без единой строчки кода. А если вы хотите добавить что-то совсем базовое — например, существо, похожее на лису, корову или зомби — смело используйте всё, что предлагает сам MCreator, и не забивайте себе голову!
В следующих статьях я постараюсь затронуть остальные части работы с GeckoLib-моделями: добавление анимированных блоков, элементов брони и оружия. Также планирую выкладывать исходные файлы, которые можно будет импортировать прямо в проект и использовать как готовую базу — однако, скорее всего, они будут доступны по подписке.
mcreator