BTCMobs
BTCMobs — это расширение категории Soon. Оно не выпущено, у него пока нет загрузки и номера версии, а записи или поля могут измениться до публикации. Эта страница описывает текущую сборку разработки для ознакомления. Это не старый плагин «BTC Mob»: движок мобов теперь находится внутри самого расширения, отдельного плагина для установки нет.
Обзор

BTCMobs позволяет создавать пользовательских мобов и интерактивных NPC полностью в веб-панели TypeWriter. Шаблон моба описывает одно существо: его базовую сущность Minecraft, уровень, здоровье, броню, навыки, добычу, фракцию, необязательную 3D-модель и необязательное размножение. Спавнеры и естественное появление определяют, где и когда шаблоны появляются в мире. Навыки и таблицы добычи определяют, что делает моб и что он оставляет после себя.
Всё, что делают мобы, возвращается в TypeWriter. События срабатывают, когда моб появляется, получает урон, использует навык или умирает. Факты и переменные сообщают здоровье, уровень, количество или расстояние. Действия создают мобов, убирают их или заставляют использовать навыки. Это позволяет квестам, диалогам и кинематике реагировать на бой или начинать его.
То же расширение также предоставляет сторону NPC: шаблон моба может отображаться как клиентский NPC с диалоговыми взаимодействиями, целями квестов, кинематографическими камерами (включая камеры, прикреплённые к кости модели), видимостью костей для каждого игрока и управлением анимацией ModelEngine или BetterModel. Расширение предназначено для сборки BTC для TypeWriter (Paper/Folia).
Возможности
- Шаблоны мобов — одна запись
btc_mob_templateна существо: тип сущности, уровень, здоровье, урон атаки, броня, навыки, добыча, фракция, таблица угрозы, модель и анимации. - Спавнеры — спавнеры на основе регионов с лимитом появления, частотой появления и прогревом, которыми можно управлять через факты, поэтому каждый игрок может видеть свой темп.
- Замена естественного появления — заменяйте ванильное появление существ мобами BTC, правило за правилом, по миру, биому и вероятности.
- Навыки — навык — это упорядоченный список действий TypeWriter или строка скрипта. Шаблоны привязывают навыки к триггерам, таким как появление, атака, урон, смерть или повторяющийся таймер.
- Таблицы добычи и предметы — ванильные материалы, пользовательские предметы, опыт и многоразовые таблицы, с шансом и количеством, растущими с уровнем моба.
- Крючки для квестов — события, факты, переменные и цель-навык, чтобы истории могли реагировать на мобов и бои.
- NPC — клиентские NPC на основе шаблонов с диалогом, взаимодействием, поворотом к игроку и поведением камеры.
- Кинематика — создавайте моба, используйте навык, фокусируйтесь на NPC или катайтесь на кости модели во время кинематики TypeWriter.
- Сохранение данных — перезарядки навыков, счётчики, ауры, таблицы угрозы и боссбары переживают перезапуск, когда настроен артефакт хранилища.
- Импорт MythicMobs — команда оператора преобразует пакет MythicMobs в страницы BTCMobs.
Установка
BTCMobs находится в разработке и не имеет публичной загрузки. Заметки ниже описывают, как устроена сборка разработки.
- Запустите сборку BTC для TypeWriter (BTC Core, Paper или Folia) с расширениями Quest и RoadNetwork, которые сборка объявляет зависимостями.
- Поместите JAR-файл BTCMobs в
plugins/Typewriter/extensions/и перезапустите сервер. Он содержит собственный движок мобов, поэтому отдельный плагин BTCMobs не нужен. - Установите необязательные интеграции, которые вам нужны. Расширение обнаруживает их во время работы: ModelEngine или BetterModel для 3D-моделей, MiniPlaceholders для предоставления плейсхолдеров, PacketEvents, Vault, DecentHolograms и WorldGuard.
- Чтобы открыть меню каталога мобов, должно быть установлено расширение BTC GUI.
- В веб-панели создайте артефакт
btcmobs_storageи сошлитесь на него из записиbtcmobs_config(см. ниже), чтобы состояние игрового процесса сохранялось.
Начало работы
В этом пошаговом примере создаётся зомби-босс, который появляется на арене, и обрабатывается его смерть.
- В веб-панели TypeWriter откройте страницу manifest. Добавьте артефакт BTCMobs Storage, затем запись BTCMobs Global Configuration и задайте
storageравным этому артефакту. - Откройте страницу static и добавьте Native BTC mob template. Задайте
id, который вы будете использовать повторно (например,crypt_warden). ЗадайтеentityTypeравнымZOMBIE,display— именем, которое видят игроки, затемlevel,maxHealth,attackDamageиarmor. - Добавьте Native BTC mob drop table и перечислите её
drops, по одному объявлению на строку, напримерDIAMOND 1 0.25(материал, количество, шанс) илиexp 20to40. Сошлитесь на таблицу по её идентификатору в спискеdropsшаблона. - Добавьте Native BTC mob skill и заполните
actionsдействиями TypeWriter, которые он выполняет, по порядку. В шаблоне добавьте идентификатор навыка вskills, напримерwarden_slam~onTimer:100, чтобы использовать его каждые 100 тиков. - Добавьте BTCMobs Spawner. Задайте
mobTypeравным идентификатору шаблона (а не его отображаемому названию),world, два углаcorner1иcorner2региона,defaultMaxMobsиdefaultCooldown(в тиках). - Добавьте событие On BTCMob die с
mobName, равным идентификатору шаблона, и свяжите егоtriggersс диалогом, наградой или модификатором факта. - Опубликуйте страницы, подойдите на расстояние
defaultActivationRange(по умолчанию 24 блока) от центра региона, и моб появится. Используйте/tw btcmobs spawners force <id>, чтобы проверить без ожидания.
/tw btcmobs spawn <template> <level> <amount> создаёт шаблон рядом с вами с выбранным вами уровнем. Команда подсказывает идентификаторы загруженных шаблонов.
Как это работает
Шаблон — это только описание. Живой моб создаётся, когда его запрашивает спавнер, естественное появление, действие Spawn a mob или команда spawn. С этого момента моб выполняет навыки, привязанные к его триггерам, и определяет свою добычу при смерти. Каждый шаг также вызывает событие TypeWriter, и именно так квесты и диалоги следят за боем.
Навыки и триггеры
Элементы списка skills шаблона записываются как skillId или skillId~trigger. Идентификатор — это идентификатор (или название) записи btc_mob_skill. Триггер указывает, когда моб его выполняет: onSpawn, onAttack, onDamaged, onDeath, onKill, onDespawn, onInteract, onTeleport, onExplode, onRanged, onProjectile или onTimer:<ticks> для повторяющегося навыка (onTimer:5s также принимается, в секундах). Навык без триггера выполняется на каждый триггер, который вызывает моб, поэтому всегда добавляйте его. conditions фильтруют каждую строку навыка, а targeters выбирают общие для них цели.
Объявления добычи
Каждая строка таблицы добычи или списка drops шаблона — это одно из следующего:
- ванильный материал с необязательными количеством и шансом, например
BONE 2 0.5; - идентификатор или название записи
btc_mob_itemс необязательными количеством и шансом; exp 10илиexp 10to20для опыта;btc:<item_id> [amount or range] [chance] [+n/m]для предмета из каталога BTC. Без токена+n/mколичество растёт с уровнем моба, от x1 на 1 уровне до x6 на 100 уровне;- идентификатор другой таблицы добычи, которая раскрывается на месте.
Неизвестные объявления записываются в лог как предупреждения и пропускаются.
NPC
NPC — это шаблон, показываемый игрокам как клиентская сущность. BtcMob NPC definition называет шаблон в mobType и задаёт отображаемое имя, его смещение и то, выполняет ли он тики. BtcMob NPC instance размещает его с помощью spawnLocation, необязательной activity, group и дополнительных data. Записи данных NPC меняют внешний вид модели: видимость костей для каждого игрока, вложения, заменяющие кость костью из другой модели, стойки ModelEngine для дня и ночи и скорость ходьбы.
Команды
Все команды находятся под /tw btcmobs. Короткие псевдонимы /tw btc и /tw btcmobsadmin запускают то же дерево. У каждого узла есть право вида btcmobs.command.<node> (см. ниже).
| Команда | Описание |
|---|---|
/tw btcmobs mobs [list] | Перечислить загруженные шаблоны мобов. |
/tw btcmobs mobs listactive | Перечислить мобов, находящихся в данный момент живыми. |
/tw btcmobs spawn <template> [level] [amount] | Создать шаблон рядом с вами (количество от 1 до 64). summon и mobs spawn эквивалентны. |
/tw btcmobs mobs kill <template> [radius] | Убить мобов шаблона вокруг вас (радиус по умолчанию 48). |
/tw btcmobs mobs killall [radius] | Убить всех мобов BTC вокруг вас (радиус по умолчанию 48). |
/tw btcmobs mobs info | Показать информацию о мобе, на которого вы смотрите. |
/tw btcmobs skills [list] | Перечислить загруженные навыки. |
/tw btcmobs cast <skill> | Применить навык от себя (skills cast, test cast и profile cast эквивалентны). |
/tw btcmobs spawners [list] | Перечислить записи спавнеров. |
/tw btcmobs spawners info <id> | Показать один спавнер. |
/tw btcmobs spawners force <id> [amount] | Принудительно создать, игнорируя условия и лимиты. |
/tw btcmobs spawners reload | Перезагрузить нативные записи. |
/tw btcmobs reload | Перезагрузить нативные записи. |
/tw btcmobs menu | Открыть меню каталога мобов (первые 45 шаблонов, по алфавиту). |
/tw btcmobs items list и get <item> [amount] | Перечислить предметы каталога или взять предмет. |
/tw btcmobs items give <player> <item> [amount] | Выдать предмет каталога игроку. |
/tw btcmobs signal <uuid> <signal> | Отправить сигнал активному мобу. |
/tw btcmobs test mechanic, condition, targeter <line> | Выполнить одну строку скрипта как тест. |
/tw btcmobs test on <uuid or nearest> <line> | Выполнить строку скрипта на конкретном активном мобе. |
/tw btcmobs import mythic [path] | Преобразовать пакет MythicMobs в страницы BTCMobs (папка по умолчанию import/BtcMob в папке данных TypeWriter). migrate mythic эквивалентна. |
/tw btcmobs audit, coverage, registrydump, variables, placeholders | Диагностика загруженных шаблонов, навыков, спавнеров и реестров. |
/tw btcmobs debug, version, modeldiag | Диагностика времени выполнения, версия и состояние BetterModel ближайших мобов. |
Права
| Право | Что даёт |
|---|---|
btcmobs.command.main | Корень /tw btcmobs и его справка. По умолчанию выдано всем. |
btcmobs.command.version | version и v. По умолчанию выдано всем. |
btcmobs.command.mobs, .mobs.spawn, .mobs.kill, .mobs.killall, .mobs.info, .mobs.listactive, .mobs.stats | Команды mobs и spawn. |
btcmobs.command.skills, .skills.cast | Просмотр и применение навыков. |
btcmobs.command.spawners, .spawners.list, .spawners.info, .spawners.force, .spawners.reload | Команды spawners. |
btcmobs.command.items, .items.list, .items.get, .items.give | Команды items. |
btcmobs.command.menu, .menu.open | Меню каталога. |
btcmobs.command.import, .migrate, .migrate.mythic, btcmobs.import | Импорт MythicMobs. |
btcmobs.command.test, .test.mechanic, .test.condition, .test.targeter, .test.cast | Команды test. |
btcmobs.command.audit, .variables, .debug, .modeldiag, .signal, .reload, .profile | Соответствующие диагностические команды. |
btcmobs.command.admin, btcmobs.admin | Административный корень (/tw btcmobsadmin). |
btcmobs.command.*, btcmobs.* | Всё вышеперечисленное. |
Все права, кроме btcmobs.command.main и btcmobs.command.version, по умолчанию доступны только операторам. Команда modeldiag проверяет btcmobs.command.modeldiag, которое расширение регистрирует (по умолчанию для операторов).
Плейсхолдеры
Плейсхолдеры публикуются только в MiniPlaceholders; PlaceholderAPI для их публикации не используется. Синтаксис — <name:argument:argument>.
| Плейсхолдер | Возвращает |
|---|---|
<btcmobs_caster> и <btcmobs_caster:field> | Идентификатор шаблона или поле моба, привязанного к игроку: name, type, level, hp, maxhp, percent, uuid. |
<btcmobs_looking> и <btcmobs_looking:field> | Те же поля для моба BTC, на которого смотрит игрок (в пределах дальности взгляда), пусто, если его нет. |
<btcmobs_var:name> | Значение глобальной переменной BTCMobs. |
<btcmobsdamage_top:BOSS:POSITION:field> | Игрок на определённом месте рейтинга урона по боссу. Поля: name, damage, raw_damage, percent, uuid. |
<btcmobsdamage_self:BOSS:field> | Собственное место просматривающего игрока в рейтинге. Поля: damage, raw_damage, percent, position. |
<btcmobsdamage_participants:BOSS>, _total, _max_health, _last_update | Итоги рейтинга урона по боссу. |
Записи
Записей: 57, сгенерированы из исходного кода расширения.
Действия7
- BTC Mob Script ActionNative BTC mob script action
- Btcmob NPC HideHide a BtcMob NPC
- Btcmob NPC ShowShow a BtcMob NPC
- Despawn Btcmobs MobDespawn a mob from BTCMobs
- Execute Btcmobs SkillExecutes a BTCMobs skill
- Open BTC Mob MenuOpen the native BTC mob catalogue
- Spawn Btcmobs MobSpawn a mob from BTCMobs
События9
- Btcmob NPC HitWhen a BtcMob NPC is hit or hits a player
- Btcmob NPC InteractWhen the player clicks on a BtcMob NPC
- Btcmobs Interact EventBTCMob Interact Event
- Btcmobs Kill Player EventBTCMob Kill Player Event
- On Btcmob DamageWhen a BTCMob takes damage.
- On Btcmob DespawnWhen a BTCMob despawns without being killed by a player.
- On Btcmob DieWhen a player kill a BTCMob.
- On Btcmob SkillWhen a BTCMob casts a skill.
- On Btcmob SpawnWhen a BTCMob spawns in the world.
Цели2
- Btcmob Skill ObjectiveBtcMob Skill Objective
- Interact Btcmob NPC ObjectiveInteract with a BtcMob NPC
Факты9
- Btcmob Count FactCount the number of active BTCMobs of the specified type
- Btcmob Health Percentage FactReturns the current health percentage of the nearest BTCMob of the specified type
- Btcmob Level FactReturns the level of the nearest BTCMob of the specified type
- Btcmob NPC Animation Playing FactReturns 1 when the specified ModelEngine animation is playing
- Btcmob NPC Distance FactReturns the distance between the player and the BtcMobs NPC
- Btcmob NPC Health Percentage FactReturns the NPC's current health percentage
- Btcmob NPC Presence FactReturns 1 when the BtcMobs NPC is currently spawned
- Btcmob NPC Threat Table Size FactReturns the size of the BtcMobs threat table
- Btcmob NPC Visibility FactReturns 1 if the player can currently see the BtcMobs NPC
Кинематики5
- Btcmob CinematicSpawn a BTCMob during a cinematic
- Btcmob NPC Bone Camera CinematicAttach the cinematic camera to a bone of a BtcMob NPC's model
- Btcmob NPC Camera CinematicFocus on a BtcMob NPC during a cinematic
- Btcmob NPC Skill CinematicTrigger a BtcMob NPC Skill
- Btcmobs Skill CinematicTrigger a BTCMob Skill during a cinematic
Сущности2
- Btcmob NPC DefinitionA BtcMob that can be used as an NPC
- Btcmob NPC InstanceAn instance of a BtcMob NPC
Данные сущностей4
- Btcmob NPC AttachmentReplace a bone of a BtcMob NPC model with one from another model
- Btcmob NPC Bone VisibilityControl BtcMob NPC bone visibility with criteria
- Modelengine Stance DataModelEngine stance configuration for day/night animations
- Mythicmob Speed DataChange the walking speed of a BtcMob
Границы взаимодействия3
- Btcmob NPC Camera BoundA camera bound that focuses on a BtcMob NPC with custom focus offset
- Btcmob NPC Look at Interaction BoundAn interaction which forces the player to look at a BtcMob NPC
- Mythicmob Look at Interaction BoundAn interaction which forces the player to look at the nearest BtcMob of a specific type
Переменные8
- Btcmob NPC Active Animations VariableReturns the active ModelEngine animations for the BtcMobs NPC
- Btcmob NPC Faction VariableReturns the BtcMobs NPC faction
- Btcmob NPC Health Percentage VariableReturns the current health percentage of the BtcMobs NPC
- Btcmob NPC Health VariableReturns the current health of the BtcMobs NPC
- Btcmob NPC Level VariableReturns the BtcMobs NPC level
- Btcmob NPC Max Health VariableReturns the maximum health of the BtcMobs NPC
- Btcmob NPC Power VariableReturns the BtcMobs NPC power
- Btcmob NPC Stance VariableReturns the current stance applied to the BtcMobs NPC
Артефакты1
- Btcmobs StorageBTCMobs Storage Artifact
Манифесты1
- Btcmobs ConfigBTCMobs Global Configuration
Определения6
- BTC Mob Drop TableNative BTC mob drop table
- BTC Mob ItemNative BTC mob item
- BTC Mob SkillNative BTC mob skill
- BTC Mob TemplateNative BTC mob template
- BTC Natural SpawnBTCMobs Natural Spawn Replacement
- BTC SpawnerBTCMobs Spawner with Corner System
Устранение неполадок
Спавнер ничего не делает, а в логе написано «references unknown mob template». mobType должен быть идентификатором btc_mob_template, а не названием, показываемым в редакторе. Скопируйте идентификатор из записи шаблона. То же правило действует для btc_natural_spawn, действий появления и исчезновения и определений NPC.
Спавнер никогда не достигает своего лимита или останавливается на 1. Регион, два угла которого совпадают, ограничивает defaultMaxMobs значением 1. Лимит считает мобов, принадлежащих этому спавнеру, где бы они ни находились. Спавнер работает, только пока игрок находится в пределах defaultActivationRange от центра региона.
Спавнер ничего не делает для некоторых игроков. Для каждого игрока рядом с регионом спавнер проверяет мир, затем conditionLines, затем criteria, и всё это должно пройти, прежде чем учитываются регион, кулдаун и спавн. Игрок, не прошедший criteria, пропускается (диагностическая строка «criteria did not match» записывается один раз для каждого игрока). criteria никогда не удаляет уже появившегося моба. Поля ...Fact (maxMobsFact, mobsPerSpawnFact и другие) по-прежнему переопределяют числовые значения по умолчанию.
Замена естественного появления никогда не срабатывает. Запись заменяет только те появления, которые сервер уже производит (естественные, при генерации чанка или по умолчанию). Если spawn-limits мира в paper-world-defaults.yml равны 0, ванильные существа никогда не появляются, и заменять нечего. Побеждает первое подходящее правило, а maxNearby, равный 0, означает отсутствие ограничения, а не ноль мобов.
Моб зацикленно проигрывает анимации атаки или смерти или не ходит. modelAnimations при прикреплении модели зацикленно проигрывает только анимации типа «простой»; названия атаки и смерти, указанные там, игнорируются. Разовые анимации задаются в modelLifecycle шаблона (появление, атака, получение удара, смерть) и проигрываются в соответствующий момент; анимация смерти проигрывается до конца, прежде чем модель исчезнет. Название, которого нет в модели, записывается в журнал один раз для шаблона, и этот момент остаётся без анимации. Анимации ходьбы мобами пока не управляются, только на стороне NPC.
Навык или добыча молча отсутствуют. Проверьте лог сервера: неизвестные объявления добычи, неизвестные предметы и недопустимые шансы записываются как предупреждения и пропускаются. Запись skills, идентификатор которой не соответствует записи btc_mob_skill, записывается в лог, когда моб применяет навык.
On BTCMob despawn не срабатывает. Событие срабатывает, когда отслеживаемый моб покидает мир, не умирая (естественный despawn, удаление плагином, падение за пределы мира), и игрок находится в пределах radius блоков. Оно не срабатывает, когда моб умирает (используйте On BTCMob die), когда выгружается только его чанк (моб снова принимается при загрузке) и когда вы удаляете его действием Despawn или /tw btcmobs mobs kill. Пустой mobName подходит любому мобу; то же верно для событий spawn, die, damage и interact.
Связанные расширения
- BetterModel — BetterModel — один из двух бэкендов моделей (
modelProvider), которыми BTCMobs может управлять для моделей мобов и NPC.