BTCMobs
BTCMobs 是一个**即将推出(Soon)**的扩展。它尚未发布,目前还没有下载和版本号,并且条目或字段在发布前可能会发生变化。本页记录的是当前的开发构建版本,仅供参考。它不是旧的 “BTC Mob” 插件:怪物引擎现在位于扩展本身之中,无需安装单独的插件。
概览

BTCMobs 让你完全通过 TypeWriter 网页面板来构建自定义怪物和可交互的 NPC。怪物模板描述一种生物:其基础 Minecraft 实体、等级、生命值、护甲、技能、掉落物、阵营、可选的 3D 模型和可选的繁殖。刷怪器和自然生成决定模板在世界中何时何地出现。技能和掉落表定义怪物的行为以及它留下的东西。
怪物所做的一切都会反馈给 TypeWriter。当怪物生成、受到伤害、释放技能或死亡时会触发事件。事实和变量会报告生命值、等级、数量或距离。动作可以生成、移除怪物,或让怪物释放技能。这使得任务、对话和过场动画可以对战斗作出反应,或发起战斗。
同一个扩展还提供了 NPC 侧:怪物模板可以显示为客户端 NPC,带有对话交互、任务目标、镜头过场动画(包括附着在模型骨骼上的镜头)、按玩家设置的骨骼可见性,以及 ModelEngine 或 BetterModel 的动画控制。该扩展面向 TypeWriter 的 BTC 构建版本(Paper/Folia)。
功能
- 怪物模板 — 每种生物一个
btc_mob_template条目:实体类型、等级、生命值、攻击伤害、护甲、技能、掉落物、阵营、仇恨表、模型和动画。 - 刷怪器 — 基于区域的刷怪器,带有生成上限、生成节奏和预热,可由事实驱动,因此每位玩家可以看到不同的节奏。
- 自然生成替换 — 逐条规则地,按世界、生物群系和概率,将原版生物的生成替换为 BTC 怪物。
- 技能 — 技能是一份有序的 TypeWriter 动作列表,或一行脚本。模板将技能附加到生成、攻击、受伤、死亡或重复计时器等触发器上。
- 掉落表与物品 — 原版材质、自定义物品、经验和可重复使用的表,其概率和数量会随怪物等级缩放。
- 任务钩子 — 事件、事实、变量和一个技能目标,使剧情能够对怪物和战斗作出反应。
- NPC — 基于模板的客户端 NPC,带有对话、交互、注视和镜头行为。
- 过场动画 — 在 TypeWriter 过场动画期间生成怪物、释放技能、聚焦于某个 NPC 或骑乘模型骨骼。
- 持久化 — 当配置了存储构件时,技能冷却、计数器、光环、仇恨表和 Boss 血条在重启后依然保留。
- MythicMobs 导入 — 管理员命令可将 MythicMobs 包转换为 BTCMobs 页面。
安装
BTCMobs 正在开发中,没有公开下载。以下说明描述的是开发构建版本的接入方式。
- 运行 TypeWriter 的 BTC 构建版本(BTC Core,Paper 或 Folia),并安装该构建版本声明为依赖项的 Quest 和 RoadNetwork 扩展。
- 将 BTCMobs 的 JAR 放入
plugins/Typewriter/extensions/并重启服务器。它自带怪物引擎,因此不需要单独的 BTCMobs 插件。 - 安装你想要的可选集成。扩展会在运行时检测它们:用于 3D 模型的 ModelEngine 或 BetterModel、用于公开占位符的 MiniPlaceholders,以及 PacketEvents、Vault、DecentHolograms 和 WorldGuard。
- 若要打开怪物目录菜单,必须安装 BTC GUI 扩展。
- 在网页面板中,创建一个
btcmobs_storage构件,并从btcmobs_config条目中引用它(见下文),以便保存游戏状态。
快速上手
本演示会创建一个僵尸 Boss,让它在竞技场中生成,并对其死亡作出反应。
- 在 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列表中通过其 id 引用该表。 - 添加一个 Native BTC mob skill,并在
actions中按顺序填入它所运行的 TypeWriter 动作。在模板中,将该技能 id 添加到skills,例如warden_slam~onTimer:100表示每 100 tick 释放一次。 - 添加一个 BTCMobs Spawner。将
mobType设为模板的 id(而不是它的显示名称),设置world、区域的两个角corner1和corner2、defaultMaxMobs以及defaultCooldown(单位为 tick)。 - 添加一个 On BTCMob die 事件,将
mobName设为模板 id,并将其triggers链接到对话、奖励或事实修改器。 - 发布这些页面,走到距区域中心
defaultActivationRange(默认 24 格)以内,怪物就会出现。使用/tw btcmobs spawners force <id>可以不用等待直接测试。
/tw btcmobs spawn <template> <level> <amount> 会在你身旁以你选择的等级生成一个模板。该命令会提示已加载的模板 id。
工作原理
模板只是一份描述。当刷怪器、自然生成、Spawn a mob 动作或 spawn 命令请求时,才会创建一个存活的怪物。此后,怪物会运行附加到其触发器上的技能,并在死亡时判定其掉落声明。每一步也会引发一个 TypeWriter 事件,任务和对话正是借此跟随战斗。
技能与触发器
模板的 skills 列表中的条目写作 skillId 或 skillId~trigger。id 是某个 btc_mob_skill 条目的 id(或名称)。触发器说明怪物何时运行它: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条目的 id 或名称,带有可选的数量和概率; exp 10或exp 10to20,表示经验;btc:<item_id> [amount or range] [chance] [+n/m],表示 BTC 目录中的物品。没有+n/m令牌时,数量会随怪物等级增长,从 1 级时的 x1 到 100 级时的 x6;- 另一个掉落表的 id,它会就地展开。
未知的声明会被记录为警告并跳过。
NPC
NPC 是以客户端实体的形式向玩家显示的模板。BtcMob NPC definition 在 mobType 中指明模板,并设置显示名称、偏移量以及是否执行 tick。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 页面(默认文件夹为 TypeWriter 数据文件夹中的 import/BtcMob)。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> | 模板 id,或与玩家绑定的怪物的某个字段:name、type、level、hp、maxhp、percent、uuid。 |
<btcmobs_looking> 和 <btcmobs_looking:field> | 玩家正在注视的 BTC 怪物的相同字段(在注视范围内),没有时为空。 |
<btcmobs_var:name> | 某个全局 BTCMobs 变量的值。 |
<btcmobsdamage_top:BOSS:POSITION:field> | Boss 伤害排行榜某个名次上的玩家。字段:name、damage、raw_damage、percent、uuid。 |
<btcmobsdamage_self:BOSS:field> | 查看者自己的排名。字段:damage、raw_damage、percent、position。 |
<btcmobsdamage_participants:BOSS>、_total、_max_health、_last_update | Boss 伤害排行榜的合计数据。 |
条目
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 的 id,而不是编辑器中显示的名称。请从模板条目中复制 id。同样的规则适用于 btc_natural_spawn、生成和移除动作以及 NPC 定义。
刷怪器始终达不到上限,或停在 1。 两个角为同一个点的区域会将 defaultMaxMobs 限制为 1。上限统计的是该刷怪器拥有的怪物,无论它们在哪里。只有当玩家位于区域中心的 defaultActivationRange 以内时,刷怪器才会工作。
刷怪器对部分玩家什么也不做。 对于区域附近的每名玩家,刷怪器依次检查世界、conditionLines 和 criteria,全部通过后才会查看区域、冷却和生成。未通过 criteria 的玩家会被跳过(每名玩家只会记录一次诊断信息“criteria did not match”)。criteria 绝不会移除已经生成的怪物。...Fact 字段(maxMobsFact、mobsPerSpawnFact 等)仍然会覆盖数值默认值。
自然生成替换从不触发。 该条目只会替换服务器已经产生的生成(自然生成、区块生成或默认生成)。如果世界在 paper-world-defaults.yml 中的 spawn-limits 为 0,原版生物永远不会生成,也就没有任何东西可被替换。第一条匹配的规则生效,并且 maxNearby 设为 0 表示没有上限,而不是零个怪物。
怪物循环播放 Attack 或 Death 动画,或者不走路。 附加模型时,modelAnimations 只会循环播放待机类动画;放在其中的攻击和死亡名称会被忽略。一次性动画在模板的 modelLifecycle 中设置(生成、攻击、受击、死亡),并在对应时刻播放;死亡动画会播放到结束,模型随后才消失。模型中不存在的名称会按模板记录一次,该时刻保持无动画。行走动画尚不由怪物驱动,仅在 NPC 一侧可用。
某个技能或掉落物静默地缺失。 请查看服务器日志:未知的掉落声明、未知的物品和无效的概率会被记录为警告并跳过。当怪物释放技能时,如果 skills 条目的 id 与任何 btc_mob_skill 条目都不匹配,则会被记录。
On BTCMob despawn 不触发。 当被追踪的怪物未死亡就离开世界(自然消失、被插件移除、掉出世界),且 radius 格内有玩家时,该事件会触发。怪物死亡时(请使用 On BTCMob die)、仅区块被卸载时(重新加载时会重新接管该怪物),以及你用 Despawn 动作或 /tw btcmobs mobs kill 移除它时,都不会触发。mobName 为空时匹配所有怪物;spawn、die、damage 和 interact 事件同样如此。
相关扩展
- BetterModel — BetterModel 是 BTCMobs 可以驱动怪物和 NPC 模型的两种模型后端(
modelProvider)之一。