Перейти к основному содержимому

Пользовательские модели

EliteMobs поддерживает пользовательские модели через Model Engine и FreeMineCraftModels.

Предисловие

С точки зрения EliteMobs система пользовательских моделей очень проста, поскольку всё, что должны сделать админы — это добавить строку в файл конфигурации NPC или пользовательского босса, указав, какую пользовательскую модель использовать. Однако необходимо предпринять правильные шаги в Model Engine и Minecraft, чтобы эта система полностью заработала, а в этом разобраться не так-то просто.

Это руководство подробно описывает работу с Model Engine и Minecraft. Оно не объясняет, как использовать Blockbench для создания пользовательских боссов и не вдаётся в подробности работы Model Engine. Существует множество других руководств по этим темам, и если вы хотите узнать больше об этих системах, лучше обратиться напрямую к их документации.

FreeMineCraft Models

Если вы хотите узнать, как использовать FMM для работы ваших моделей, обратитесь к этой странице вики.

Поддержка Bedrock (Geyser)

Смогут ли игроки Bedrock (подключающиеся через Geyser/Floodgate) видеть пользовательские модели, полностью зависит от вашего плагина моделей (ModelEngine или FreeMinecraftModels) и настройки ресурс-пака, а не от EliteMobs. EliteMobs действительно определяет клиентов Bedrock, но использует эту информацию для таких вещей, как отрисовка меню и позиционирование именных табличек — он не генерирует и не предоставляет отдельную модель, совместимую с Bedrock. По поводу поддержки моделей Bedrock/Geyser обращайтесь к документации вашего плагина моделей.

Интеграция с LibsDisguises

EliteMobs также поддерживает LibsDisguises в качестве альтернативы пользовательским моделям. Когда пользовательские модели не настроены, EliteMobs может использовать LibsDisguises для изменения внешнего вида сущности. Эта интеграция автоматически обрабатывает синхронизацию видимости имени.

Чтобы использовать LibsDisguises вместо пользовательских моделей, настройте параметры маскировки (disguise) вашего босса/NPC, не указывая поле customModel.

Скриптовые модели предметов (FMM)

Пользовательские предметы EliteMobs могут использовать систему скриптовых предметов FreeMinecraftModels для продвинутого поведения «модель + Lua-скрипт». Это выходит за рамки статических пользовательских моделей — скриптовые предметы могут реагировать на надевание, атаку, правый клик и многие другие события предметов (FMM предоставляет в общей сложности 22 хука скриптов предметов) через Lua-скрипты.

Чтобы использовать это, установите поле scriptedItem в конфигурации вашего пользовательского предмета в значение ID предмета FMM. EliteMobs обрабатывает имя, lore, зачарования и уровень; FMM предоставляет 3D-модель и поведение скрипта.

# Пример конфигурации пользовательского предмета EliteMobs
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
scriptedItem: flame_blade

Смотрите руководство FMM Lua Getting Started для написания скриптов предметов и руководство по API FMM для деталей интеграции для разработчиков.

Минимальные требования

EliteMobs, Model Engine R3.0.0* или новее ЛИБО FreeMinecraftModels, Blockbench**, и ресурс-пак Minecraft.

* У этого плагина могут быть дополнительные зависимости. Проверьте документацию на их стороне.
** Необходим для создания и редактирования пользовательских моделей. Не нужен, если вы просто хотите установить контент без его изменения.

Приоритет плагинов

Если установлены и ModelEngine, и FreeMinecraftModels, EliteMobs по умолчанию будет использовать FreeMinecraftModels. Одновременно будет активен только один плагин пользовательских моделей.

Ручная установка пользовательской модели

Примечание: это руководство предполагает, что у вас уже есть корректная пользовательская модель. Они поставляются в форматах файлов Blockbench (.bbmodel).

EliteMobs может использовать пользовательские модели для NPC и пользовательских боссов. Процесс одинаков для обоих и выглядит следующим образом:

Шаг 1. Настройка конфигурации EliteMobs

Перейдите к конфигурационному файлу пользовательского босса или NPC, который вы хотите изменить, и добавьте следующую строку:

customModel: modelname

Замените modelname на имя вашей модели. Имя — это название файла пользовательской модели, который вы используете. Например, файл пользовательской модели Test Boss — это showcase_boss.bbmodel. Соответственно, параметр конфигурации должен быть

customModel: showcase_boss

И это всё со стороны EliteMobs! Теперь становится немного сложнее.

Шаг 2. Генерация данных Model Engine

Примечание: в случае сомнений или проблем обратитесь к вики Model Engine здесь.

  1. Поместите файл вашей пользовательской модели Blockbench (.bbmodel) в каталог (yourServer)/plugins/ModelEngine/blueprints.
  2. Выполните команду /meg reload. Если всё сработало правильно, вы должны получить сообщение [Model Engine] X models loaded, где x — количество зарегистрированных вами моделей.

Шаг 3. Распространение ресурс-пака

Это, возможно, самая хитрая часть, если вы хотите, чтобы ваш сервер управлял загрузками. Сначала проверьте, работает ли система, когда ресурс-пак уже установлен на вашем клиенте, прежде чем разбираться с его автоматическим распространением!

  1. Перейдите в каталог (yourServer)/plugins/ModelEngine/resource pack и создайте ресурс-пак на основе этих данных или добавьте находящуюся там папку assets в папку assets вашего ресурс-пака
    1. Если вы создаёте новый ресурс-пак, вы можете поместить файлы из resource pack в zip-архив, и это будет корректный ресурс-пак, который вы можете распространять. Подробнее.
    2. Если у вас уже есть ресурс-пак, убедитесь, что вы случайно не перезаписываете существующие модели. Подробнее.
  2. Распространите свой ресурс-пак среди игроков. Только игроки, у которых есть ресурс-пак, смогут видеть пользовательские модели, а для всех остальных это будет выглядеть очень странно и сломанно. Если вы намерены активно их использовать, возможно, стоит сделать использование ресурс-пака обязательным.
    1. (Необязательно) Чтобы позволить игрокам загружать ресурс-пак при входе, вам нужно разместить файл где-нибудь онлайн и изменить поле resource-pack= в server.properties, чтобы оно указывало на этот адрес.*
    2. (Необязательно) Если вы изменяете ресурс-паки, вам стоит использовать параметр resource-pack-sha1=, чтобы сервер мог проверить, нужно ли обновить ресурс-пак игрока. Чтобы сгенерировать это значение, загрузите свой ресурс-пак на http://onlinemd5.com/ и убедитесь, что выбрали опцию SHA1. Вам придётся делать это каждый раз при обновлении ресурс-пака, иначе ваши пользователи не получат обновление.*
    3. (Необязательно) Чтобы заставить игроков использовать ресурс-паки, используйте параметр require-resource-pack=true в server.properties.*

Если вы изменили server.properties, вам нужно будет перезапустить сервер!

* Примечание: в интернете есть множество руководств, которые могут помочь вам с настройкой, если эти инструкции вам не помогают.

Объединение ресурс-паков

Если вам нужно объединить ваши ресурс-паки, вы можете сделать это вручную. Но мы рекомендуем использовать онлайн-инструмент, такой как merge.elmakers, для объединения ваших ресурс-паков.

Шаг 4. Надеемся, что это работает

При условии, что всё было сделано правильно, теперь вы должны видеть пользовательскую модель на вашем боссе или NPC. Вы можете заспавнить их с помощью команд:

  • Пользовательский босс: /em spawn boss filename.yml
  • NPC: /em place npc filename.yml

Затем вы можете убрать их с помощью команды /em remove.

Создание и адаптация пользовательских моделей для EliteMobs

EliteMobs может использовать любую модель, которую Model Engine считает корректной, а это значит, что с этим можно сделать практически всё что угодно.

Однако, когда речь идёт об анимациях, требуется использование определённых имён для анимаций, чтобы гарантировать, что боссы смогут использовать эти анимации.

Эти имена анимаций — те, что заданы в Blockbench на вкладке animations. Вы можете переименовать их в любое время, а значит, вы можете адаптировать любые существующие модели для работы с EliteMobs.

Анимации

Обратите внимание, что этот раздел всё ещё расширяется, так как эта система пока совсем новая. По мере поступления запросов на функции в него будет добавляться больше.

idle

idle — это имя анимации для сущностей, которые не находятся в бою и не двигаются. EliteMobs инициализирует модель в состоянии idle, но не переопределяет встроенную систему анимации idle ModelEngine. Модель будет автоматически использовать эту анимацию благодаря поведению по умолчанию ModelEngine/FMM.

walk

walk — это имя анимации для сущностей, которые двигаются. EliteMobs инициализирует модель в состоянии walk, но не переопределяет встроенную систему анимации walk ModelEngine. Модель будет автоматически использовать эту анимацию благодаря поведению по умолчанию ModelEngine/FMM.

attack

Существует три типа анимаций атаки:

attack

attack — это правильное универсальное имя анимации для случая, когда босс атакует.

attack_melee

attack_melee — это правильное имя анимации для атак, выполняемых, когда пользовательский босс атакует сущность с помощью ванильной ближней атаки Minecraft. Переопределяет attack. Обратите внимание, что анимация воспроизводится после нанесения урона. К сожалению, на данный момент это ограничение. Поэтому старайтесь делать анимацию очень быстрой.

attack_ranged

attack_ranged — это правильное имя анимации для атак, выполняемых, когда пользовательский босс создаёт сущность-снаряд. Переопределяет attack. Обратите внимание, что анимация воспроизводится после выпуска снаряда. К сожалению, на данный момент это ограничение. Поэтому старайтесь делать анимацию очень быстрой.

Система запасных анимаций (Fallback)

EliteMobs использует систему запасных вариантов для анимаций атаки:

  • Если attack_melee не определена, используется attack
  • Если attack_ranged не определена, используется attack
  • Если attack не определена, анимация не воспроизводится

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

damaged

внимание

Анимация damaged в настоящее время не реализована. Эта функция запланирована на будущий выпуск. Модели не будут автоматически воспроизводить анимации получения урона при ударе.

death

death — это правильное имя анимации для анимации смерти. EliteMobs не изменяет систему анимации idle по умолчанию, используемую Model Engine.

powers

внимание

Анимации способностей (powers) ЕЩЁ НЕ РЕАЛИЗОВАНЫ. Эта функция запланирована на будущий выпуск.

Примечание: этот фрагмент всё ещё в разработке. Ниже описаны функции в том виде, в каком они запланированы.

Каждой способности (power) в EliteMobs можно назначить анимацию. Анимация всегда начинается при срабатывании способности, и на данный момент никаких дополнительных триггеров в течение использования способности не предусмотрено. Некоторые способности, такие как неуязвимости, ничего не сделают, так как у них нет триггеров и они являются просто пассивными свойствами боссов.

Чтобы назначить анимацию способности, анимация должна быть названа так же, как файл способности elitemobs.

Например, чтобы добавить анимацию к способности zombie necronomicon, анимация должна называться zombie_necronomicon.yml. Она начнёт воспроизводиться сразу после срабатывания способности и закончится, когда закончится анимация, если она не настроена на цикл, или когда способность завершится.

Импорт пользовательских моделей из подземелий

Шаг 1. Обычный импорт

При импорте zip-архива пакета подземелья, содержащего пользовательские модели, пользовательские модели автоматически перемещаются в (yourServer)/plugins/ModelEngine/blueprints, и Model Engine автоматически перезагружается, чтобы сгенерировать соответствующий ресурс-пак и файлы Model Engine.

Шаг 2. Ресурс-пак

EliteMobs автоматически экспортирует свои встроенные файлы ресурс-пака в папку (yourServer)/plugins/EliteMobs/resource_pack при запуске. Этот экспорт использует сравнение контрольных сумм, чтобы избежать ненужного копирования, поэтому файлы обновляются только при изменении версии плагина.

Вам нужно будет объединить эти файлы ресурс-пака с любыми файлами ресурс-пака Model Engine и распространить объединённый ресурс-пак среди игроков. Только игроки, у которых есть ресурс-пак, смогут видеть пользовательские модели.

Устранение неполадок

Распространённые проблемы:

  1. Модель не видна:

    • Убедитесь, что /meg reload показывает, что ваша модель загружена
    • Проверьте, что ресурс-пак установлен на клиенте
    • Убедитесь, что имя customModel совпадает с именем файла .bbmodel (без расширения)
  2. Анимации не воспроизводятся:

    • Убедитесь, что имена анимаций в Blockbench точно совпадают с документированными именами
    • Проверьте, что анимации не настроены на цикл, если они должны воспроизводиться один раз
    • Протестируйте отдельные анимации с помощью команд Model Engine
  3. Установлены оба плагина:

    • EliteMobs будет использовать FreeMinecraftModels, если присутствуют оба
    • Чтобы принудительно использовать ModelEngine, удалите FreeMinecraftModels