BetterModel
Обзор
BetterModel соединяет плагин BetterModel с TypeWriter. Вы создаёте модель и её анимации в Blockbench, устанавливаете её в BetterModel, а затем используете в TypeWriter как сущность: определение (definition) указывает, какую модель использовать, экземпляр (instance) размещает её в мире, и к ней применим обычный механизм сущностей TypeWriter (аудитории, активности, взаимодействия, говорящие в диалогах).
Модели отрисовываются пакетами для каждого игрока отдельно, поэтому каждый игрок может видеть разное состояние одного и того же NPC: другие показанные кости, другое свечение, другое снаряжение. Расширение также добавляет действия для запуска и остановки анимаций, записи кинематографических сцен для анимации моделей и конечностей игрока и камеру, которая едет на кости анимированной модели.
Возможности
- Сущности-модели — определение и экземпляр превращают любую модель BetterModel в NPC с поддержкой аудитории, активности и взаимодействия.
- Автоматические анимации — анимации простоя, ходьбы, движения боком, прыжка, полёта, атаки, получения урона и взаимодействия воспроизводятся по состоянию сущности, а их названия можно менять.
- Действия с анимациями — запуск или остановка анимации на размещённой модели от любого триггера.
- Управление костями для каждого игрока — показ или скрытие костей и настройка свечения, оттенка, блеска зачарования и яркости в зависимости от criteria.
- Пользовательские хитбоксы — области клика, привязанные к костям, через Hitbox либо автоматические из костей
hitboxмодели. - Замена костей — подмена кости костью из другой модели через Attachment или Passenger.
- Анимации игрока — воспроизведение анимаций конечностей игрока BetterModel на игроке через действие или в кинематографической сцене.
- Кинематографические сцены — управляйте моделью по записи с помощью кинематографической сущности и снимайте её камерой на кости.
- Индикатор взаимодействия — у моделей с именем над именем показывается индикатор взаимодействия или диалога, управляемый целями взаимодействия и записями взаимодействий.
Установка
- Установите на сервер BetterModel и убедитесь, что он загружает ваши модели. Для камеры на кости нужен BetterModel 2.1.0 или новее; расширение собрано под BetterModel 3.3.0.
- Установите официальные расширения TypeWriter Quest, Basic, Entity и RoadNetwork (расширение собрано под все четыре).
- Получите BetterModel в магазинах (см. кнопки выше) и положите JAR-файл в
plugins/Typewriter/extensions/. - Перезапустите сервер. В логе появится
[BetterModelExtension] BetterModel detected: initializing. Если BetterModel отсутствует, будетBetterModel plugin not found; extension disabled. - Поместите свои модели в BetterModel и сгенерируйте его ресурспак согласно документации BetterModel. Игроки должны принять ресурспак, чтобы видеть модели.
Быстрый старт
Разместим анимированного NPC, который машет рукой, когда по нему кликают:
- В веб-панели TypeWriter откройте страницу static и добавьте BetterModel Definition. Задайте
modelIdравным имени вашей модели в BetterModel, включитеnamedи задайтеdisplayName. - В
defaultAnimationSettingsпроверьте, чтоidle,walkиinteractсоответствуют названиям анимаций вашей модели (по умолчанию этоidle,walkиinteract). - Откройте страницу manifest и добавьте BetterModel Instance, задайте
definitionравным только что созданному и захватитеspawnLocationинструментом позиции. - По желанию добавьте Bone Visibility в
dataопределения, чтобы скрыть кость (например шляпу) от игроков, не соответствующих criteria. - Добавьте entity interact event и действие Play Entity Animation. Задайте
entityравным экземпляру, аanimation— названию пользовательской анимации. - Нажмите Publish и кликните по NPC в игре.
По NPC можно кликнуть только там, где у него есть хитбокс взаимодействия. Назовите кость hitbox в Blockbench или добавьте запись Hitbox. Если нет ни того, ни другого, используется один бокс, покрывающий всю модель.
Как это работает
Определение содержит то, что является общим (модель, названия анимаций, хитбоксы, данные). Экземпляр содержит позицию, дополнительные данные и activity. Записи data экземпляра применяются после записей определения, поэтому экземпляр может переопределять своё определение.
Конфигурация
У расширения нет файла конфигурации. Моделями, конечностями и ресурспаком управляет BetterModel.
Две папки BetterModel используются по имени: сущности используют модели, зарегистрированные в BetterModel, а действия и кинематографические сцены игрока читают модели конечностей игрока из папки players BetterModel (например steve, alex).
Записи
Записей: 15, сгенерированы из исходного кода расширения.
Действия3
- Play Bettermodel AnimationPlay an animation on a BetterModel entity
- Play Player AnimationPlay a player animation from BetterModel players folder
- Stop Bettermodel AnimationStop an animation on a BetterModel entity
Кинематики4
- Bettermodel Animation CinematicPlay a BetterModel model animation during a cinematic
- Bettermodel Bone Camera CinematicAttach the cinematic camera to a bone of a BetterModel
- Bettermodel Entity CinematicUse an animated BetterModel entity in a cinematic
- Player Animation CinematicPlay a player animation during a cinematic
Сущности2
- Bettermodel DefinitionA BetterModel entity definition
- Bettermodel InstanceAn instance of a BetterModel entity
Данные сущностей6
- Bettermodel AttachmentReplace a bone of a BetterModel with one from another model
- Bettermodel Bone AppearancePer-bone glow, tint, glint and brightness
- Bettermodel Bone VisibilityControl bone visibility with criteria
- Bettermodel Hitbox DataConfigure hitbox on a specific bone
- Bettermodel Indicator ConfigConfigure the interaction indicator for a BetterModel entity
- Bettermodel PassengerAttach a passenger entity to a BetterModel bone
Устранение неполадок
NPC невидим. Проверьте в логе Model '...' not found. modelId должен совпадать с моделью, загруженной BetterModel. Если не совпадает, расширение пробует модель под названием steve, а если и её нет, ничего не создаёт. Также проверьте, что игрок принял ресурспак.
NPC появляется, но по нему нельзя кликнуть. Хитбокс взаимодействия берётся из кости, в имени которой есть hitbox или hit_box, или из записей Hitbox. Если в модели нет ни того, ни другого, создаётся один бокс, покрывающий модель, высотой не менее 1,8 блока. Измените hitboxYOffset в defaultAnimationSettings, если боксы парят на неправильной высоте (по умолчанию -1.6).
Анимация ничего не делает. Названия анимаций — это названия из модели Blockbench с точным написанием. Для Play Player Animation modelId должен быть моделью конечностей из папки players BetterModel, а не обычной моделью.
Снаряжение, огонь и другие ванильные данные не действуют. У модели нет ванильных метаданных сущности. Лог один раз выводит предупреждение вида '...' has no BetterModel equivalent and is ignored. Для снаряжения в основной руке, второй руке и шлема нужны кости с тегами ri, li и ph в Blockbench (иначе в логе сказано, что у модели нет кости для этого слота); слоты брони не поддерживаются. Неравномерный 3D-масштаб использует только значение X.
Камера на кости не двигается. Она остаётся на месте, пока модель не видна игроку или кость не найдена. Проверьте boneName (регистр не учитывается) и что задан либо entityCinematic, либо instance; если заданы оба, побеждает кинематографическая сущность.
Модель пропадает после смены мира или переподключения. Расширение перезагружает модели после входа, возрождения, телепортации и загрузки ресурспака с небольшими задержками (до 5 секунд). Если модель всё равно отсутствует, перезайдите; модели кинематографических сцен удаляются при смене мира и когда игрок выходит.
Связанные расширения
- Text Display Dialogue — плавающие диалоги над NPC-моделями.