MythicMobs NPC
Обзор
MythicMobs NPC превращает моба MythicMobs в NPC TypeWriter. Вы по-прежнему создаёте моба, его модель и навыки в MythicMobs, а затем размещаете его в мире из веб-панели как определение NPC (NPC definition, то есть что это за NPC) и экземпляр NPC (NPC instance, то есть где он стоит и кто его видит).
NPC может показывать имя над головой, отображать маркеры квестов, начинать диалог при правом клике игрока, скрываться или показываться действием, воспроизводить анимации и появляться в кинематографических сценах. Поддерживаются модели из BetterModel и ModelEngine.
Расширение работает на Paper. По умолчанию каждый игрок получает собственную копию NPC (ticking выключен), поэтому кинематографическая сцена или действие скрытия одного игрока никогда не влияют на остальных. Включите ticking, чтобы получить настоящего серверного моба, который может ходить.
Возможности
- Определение и экземпляр NPC — определите NPC на основе MythicMob один раз и размещайте его сколько угодно раз с общей аудиторией, аудиторией для каждого игрока или группы.
- Табличка с именем и маркеры квестов — парящее имя и маркер
❗,❓или💬, когда у NPC есть цель или диалог для игрока. - События взаимодействия — запуск диалогов по правому клику с фильтром по приседанию, а также событие для ударов в обоих направлениях.
- Цели квестов — взаимодействие с NPC, сбор предметов с мобов MythicMobs или подсчёт взаимодействий с мобом.
- Факты и переменные — присутствие, расстояние, видимость, здоровье, таблица угрозы, анимации, уровень, сила, фракция, стойка и любая переменная MythicMobs.
- Показ, скрытие и анимация — действия для показа или скрытия NPC и для запуска или остановки анимации ModelEngine или BetterModel.
- Кинематографические сцены — камера с фокусом на NPC, камера, закреплённая на кости модели, NPC, управляемый записанной лентой, и навыки MythicMobs, применяемые в позиции.
- Привязки камеры и взгляда — заставляйте игрока смотреть на NPC или ближайшего моба определённого типа во время взаимодействия.
- Стойки — дневные и ночные стойки простоя и ходьбы, а также стойки взаимодействия, атаки и другие через ModelEngine или BetterModel.
Установка
- Установите на сервер MythicMobs и PacketEvents.
- В TypeWriter убедитесь, что установлены официальные расширения Entity, Basic, Quest и Road Network. Сборка объявляет Quest и Road Network как зависимости и использует расширения Entity и Basic во время работы.
- По желанию: установите BetterModel или ModelEngine для 3D-моделей. BetterModel проверяется первым, а ModelEngine используется, когда BetterModel отсутствует. Установите Geyser, если игроки Bedrock должны видеть камеру на кости.
- Получите расширение в магазинах (см. кнопки в сводной панели выше) и положите JAR-файл в
plugins/Typewriter/extensions/. - Перезапустите сервер. Консоль выведет
MythicmobsNPCExtension has been successfully initialized. - Создайте своих мобов в MythicMobs (и привяжите там их модель). Расширение призывает и показывает их, но не создаёт и не изменяет модель.
Быстрый старт
Разместим кузнеца, который начинает диалог, когда игрок кликает по нему правой кнопкой:
- В MythicMobs создайте моба с внутренним именем
Blacksmith(с моделью, если вы её используете) и перезагрузите MythicMobs. - В веб-панели TypeWriter откройте страницу static и добавьте MythicMob NPC Definition. Задайте
displayName— имя, показываемое над головой, аmobTypeравнымBlacksmith. - Добавьте MythicMob NPC Instance. Свяжите
definitionс определением и задайтеspawnLocation(с поворотом) там, где стоит NPC. - Добавьте MythicMob NPC Interact Event. Свяжите
definitionс тем же определением и оставьтеshiftTypeравнымANY. - В его
triggersсвяжите запись диалога (например, озвученный диалог) со страницы sequence. - Опубликуйте и кликните правой кнопкой по NPC. Над NPC появится маркер
💬для игроков, которые могут с ним поговорить.
Чтобы сделать его целью квеста, добавьте Interact MythicMob NPC Objective с entity, равным определению: маркер превращается в ❓ (или ❗, когда квест отслеживается), а к NPC ведёт поток-путь.
Оставьте ticking выключенным для статичных NPC: каждый игрок видит собственную копию, что необходимо для кинематографических сцен и видимости для каждого игрока. Включайте его только тогда, когда моб должен двигаться или сражаться на сервере, и задайте clientSideRadius больше 0, чтобы его ИИ оставался включённым.
Как это работает
Определение содержит то, что представляет собой NPC: тип моба, имя, параметры таблички с именем, режим ticking и данные сущности, действующие для каждого экземпляра. Экземпляр содержит то, где он стоит, собственные данные сущности, необязательную activity (например, путь по сети дорог) и group.
Факты, переменные, действия показа и скрытия и записи камеры ссылаются на экземпляр. Они находят живого моба типа из определения в пределах радиуса поиска от точки появления экземпляра (по умолчанию 5 блоков, задаётся radius у цели).
Конфигурация
Тексты и смещения, не являющиеся полями записей, — это сниппеты TypeWriter. Редактируйте их в plugins/Typewriter/snippets.
| Сниппет | По умолчанию | Назначение |
|---|---|---|
objective.entity.indicator.tracked | <gold><b>❗ | Маркер, когда NPC является целью отслеживаемого квеста. |
objective.entity.indicator.normal | <blue><b>❓ | Маркер, когда NPC является целью активной цели. |
objective.entity.indicator.dialogue | <white><b>💬 | Маркер, когда у NPC есть доступное взаимодействие. |
entity.nameplate | <other> затем <reset><display_name> | Раскладка таблички с именем. <other> — строки из данных сущности. |
entity.name.color | #40000000 | Цвет фона таблички с именем и маркера. |
quest.objective.interact_mythicmob_npc | Interact with <entity> | Текст цели взаимодействия по умолчанию. |
advancedQuest.display | <display> (<current>/<required>), в серых тонах | Строка целей-счётчиков (добыча, навык), пока они выполняются. Плейсхолдеры: <display> (текст display цели), <current>, <required>. Ключ общий с другими расширениями целей BTC, поэтому одна правка меняет оформление всех. |
advancedQuest.completed | ✔, затем зачёркнутый <display> и (<current>/<required>) | Та же строка, когда amount достигнуто. Те же плейсхолдеры. |
mythicmob_npc_look_at_interaction_bound.look_back_delay | 500 | Миллисекунды, в течение которых игрок может отвести взгляд, прежде чем привязка взгляда повернёт его обратно. |
mythicmob_type_look_at_interaction_bound.look_back_delay | 500 | То же для привязки взгляда по типу моба. |
Записи
Записей: 38, сгенерированы из исходного кода расширения.
Действия4
- Mythicmob NPC HideHide a MythicMob NPC
- Mythicmob NPC Play AnimationPlays a ModelEngine animation on a MythicMob NPC
- Mythicmob NPC ShowShow a MythicMob NPC
- Mythicmob NPC Stop AnimationStops a ModelEngine animation on a MythicMob NPC
События3
- Mythicmob NPC HitWhen a MythicMob NPC is hit or hits a player
- Mythicmob NPC InteractWhen the player clicks on a MythicMob NPC
- On Mythic Mob LootWhen a player loots an item from a MythicMob
Цели3
- Interact Mythicmob NPC ObjectiveInteract with a MythicMob NPC
- Mythicmob Loot ObjectiveAn objective to loot specific items from MythicMobs mobs
- Mythicmob Skill ObjectiveMythicMob Skill Objective
Факты6
- Mythicmob NPC Animation Playing FactReturns 1 when the specified ModelEngine animation is playing
- Mythicmob NPC Distance FactReturns the distance between the player and the MythicMobs NPC
- Mythicmob NPC Health Percentage FactReturns the NPC's current health percentage
- Mythicmob NPC Presence FactReturns 1 when the MythicMobs NPC is currently spawned
- Mythicmob NPC Threat Table Size FactReturns the size of the MythicMobs threat table
- Mythicmob NPC Visibility FactReturns 1 if the player can currently see the MythicMobs NPC
Кинематики4
- Mythicmob NPC Bone Camera CinematicAttach the cinematic camera to a bone of a MythicMob NPC's model
- Mythicmob NPC Camera CinematicFocus on a MythicMob NPC during a cinematic
- Mythicmob NPC Entity CinematicUse an animated MythicMob NPC in a cinematic
- Mythicmob NPC Skill CinematicTrigger a MythicSkill at a specific position during a cinematic
Сущности2
- Mythicmob NPC DefinitionA MythicMob that can be used as an NPC
- Mythicmob NPC InstanceAn instance of a MythicMob NPC
Данные сущностей4
- Modelengine Stance DataModelEngine stance configuration for day/night animations
- Mythicmob NPC AttachmentReplace a bone of a MythicMob NPC model with one from another model
- Mythicmob NPC Bone VisibilityControl MythicMob NPC bone visibility with criteria
- Mythicmob Speed DataChange the walking speed of a MythicMob
Границы взаимодействия3
- Mythicmob Look at Interaction BoundAn interaction which forces the player to look at the nearest MythicMob of a specific type
- Mythicmob NPC Camera BoundA camera bound that focuses on a MythicMob NPC with custom focus offset
- Mythicmob NPC Look at Interaction BoundAn interaction which forces the player to look at a MythicMob NPC
Переменные9
- Mythicmob NPC Active Animations VariableReturns the active ModelEngine animations for the MythicMobs NPC
- Mythicmob NPC Faction VariableReturns the MythicMobs NPC faction
- Mythicmob NPC Health Percentage VariableReturns the current health percentage of the MythicMobs NPC
- Mythicmob NPC Health VariableReturns the current health of the MythicMobs NPC
- Mythicmob NPC Level VariableReturns the MythicMobs NPC level
- Mythicmob NPC Max Health VariableReturns the maximum health of the MythicMobs NPC
- Mythicmob NPC Power VariableReturns the MythicMobs NPC power
- Mythicmob NPC Stance VariableReturns the current stance applied to the MythicMobs NPC
- Mythicmob NPC VariableReads a MythicMobs variable from the active NPC
Устранение неполадок
NPC никогда не появляется. Консоль выводит Could not spawn MythicMob NPC '<type>' at <location>, когда mobType не является именем моба MythicMobs или призыв не удался. mobType — это внутреннее имя моба с тем же регистром, что и в MythicMobs. Проверьте, что MythicMobs загрузил моба и что чанк spawnLocation может загрузиться.
Расширение предупреждает об отсутствии MythicMobs. При запуске в логе написано MythicMobs plugin not found! This extension requires MythicMobs to function properly. Установите MythicMobs и перезапустите сервер.
Факты и переменные всегда возвращают значение по умолчанию. Они определяют живого моба рядом с точкой появления экземпляра. Если NPC ушёл дальше radius (по умолчанию 5 блоков) или тип моба отличается, ничего не совпадает, и факт возвращает 0. Увеличьте radius в target.
Диалог не начинается по клику. Событие взаимодействия реагирует только на NPC, размещённого экземпляром MythicMob NPC Instance, а definition должно быть определением этого экземпляра. interactionType выбирает клик: RIGHT_CLICK, LEFT_CLICK или ALL. До версии 4.9.1 обрабатывались только правые клики, а на Paper 26.x не обрабатывались даже они: обновите расширение.
Игроки не делят NPC. Если ticking выключен и у экземпляра нет group, каждый игрок получает собственную копию, поэтому действие скрытия или кинематографическая сцена одного игрока не влияют на других. Задайте group у экземпляра, чтобы делить NPC внутри отряда или гильдии.
Кость не скрывается или не привязывается. Bone Visibility Data и Attachment Data применяются к модели, как только она появляется, и после каждого респауна — при включённом и выключенном ticking. Имя кости или модели, которого модель не знает, пропускается, а консоль его записывает: сверьте имена с моделью.
Камера на кости ничего не показывает или игрок сохраняет обычный вид. boneName должно существовать в модели, а моб должен быть призван для этого игрока. С Entity Cinematic используйте entityCinematic, чтобы камера следовала именно за этим мобом. Камера начинается на уровне глаз игрока и перескакивает на кость, как только модель найдена.
Модель мерцает, когда игрок или камера находятся рядом с NPC. Причина — каллинг ModelEngine: ModelEngine определяет от ног модели, находится ли она позади игрока (backcull) или за блоками (blockedcull), и вблизи ошибочно скрывает модель, а затем снова показывает её. Начиная с версии 4.9.1 расширение отключает оба режима каллинга у каждого NPC, как только обнаруживает его модель ModelEngine, — настраивать ничего не нужно. Если мерцание осталось, найдите в консоли предупреждение ModelEngine exposes no back/blocked cull setter: оно означает, что ваша версия ModelEngine не позволяет расширению менять эти настройки. В этом случае добавьте cullconfig{backcull=false;blockedcull=false} @self ~onSpawn в навыки моба MythicMobs после механики model и заново заспавните NPC. Модели BetterModel это не затрагивает.
Связанные расширения
- MythicMobs — записи призыва, навыков и убийств для обычных мобов MythicMobs.
- BetterModel — модели BetterModel как NPC с тем же подходом к кинематографическим сценам.