生物定义
生物定义文件位于 plugins/EmakiMobs/mobs/*.yml,每个文件对应一种自定义生物。
顶层字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | ✅ | 生物唯一 ID。若与原版 EntityType 名称完全一致(如 zombie),则自动启用类型覆写。 |
type | string | — | 原版实体类型名(如 zombie、skeleton、creeper);省略时默认与 id 相同。 |
display_name | string | — | 生物的显示名称,支持 MiniMessage 格式,用于后台日志和管理命令展示。 |
experience | int | — | 击杀该生物掉落的原版经验值。默认 0。 |
components | section | — | 直接映射到 Minecraft 实体属性的字段。详见组件参考。 |
attributes | section | — | EmakiAttribute 属性值映射(需安装 EmakiAttribute)。 |
skills | section | — | 技能触发器映射(需安装 EmakiSkills)。详见技能触发器。 |
threat | section | — | 威胁仇恨表配置。省略时不启用威胁系统。 |
boss_bar | section | — | Boss 血条配置。省略时不显示血条。 |
类型覆写
当 id 与一个有效的原版 EntityType 名称完全一致时(大小写不敏感),EmakiMobs 会对所有自然刷新的该类型生物自动应用此定义的 components 和 attributes,无需在 spawn_rules/ 中额外配置。
yaml
# 对所有原版僵尸应用加强属性
id: zombie
type: zombie
components:
max_health: 22.0
attack_damage: 3.5CAUTION
⚠ 类型覆写会影响服务器上所有自然刷新的该类型生物,包括其他插件产生的同类型生物。如只需特定区域的自定义生物,使用独立 id 配合 spawn_rules/ 中 type: natural 规则。
attributes 字段
yaml
attributes:
STR: 15 # 键名与 EmakiAttribute 中定义的属性 ID 一致
VIT: 10
AGI: 5threat 字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled | boolean | true | 是否启用威胁系统。 |
max_range | double | 64.0 | 超出此范围(格)的玩家不计入威胁。 |
weights.damage | double | 1.0 | 每点伤害产生的威胁值。 |
weights.healing | double | 0.5 | 每点治疗队友产生的威胁值。 |
decay.rate | double | 0.05 | 每秒威胁自然衰减比例(0.05 = 5%/秒)。 |
decay.out_of_range | boolean | true | 玩家离开 max_range 后立即清空其威胁。 |
boss_bar 字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
title | string | "" | 血条标题,支持 MiniMessage 格式。 |
color | string | PURPLE | 血条颜色:PINK / BLUE / RED / GREEN / YELLOW / PURPLE / WHITE。 |
style | string | SOLID | 血条风格:SOLID / SEGMENTED_6 / SEGMENTED_10 / SEGMENTED_12 / SEGMENTED_20。 |
range | double | 64.0 | 在此范围(格)内的玩家可见血条。 |
color 与 style 的取值不区分大小写,对应 paper-api 的 BarColor / BarStyle 枚举。
非法取值会静默回退
color 与 style 用 valueOf 解析,解析失败时不报错、不打日志,直接回退到默认值(color → PURPLE,style → SOLID)。
BarStyle 没有 NOTCHED_6 / NOTCHED_10 / NOTCHED_12 / NOTCHED_20 这类取值。写成 NOTCHED_10 不会有任何提示,血条会静默变成实心(SOLID)。分段血条只能用 SEGMENTED_*。
完整示例
yaml
id: elite_zombie
type: zombie
display_name: "<gradient:#ff4444:#ffaa00>精英僵尸</gradient>"
components:
max_health: 80.0
movement_speed: 0.28
attack_damage: 7.0
follow_range: 40.0
knockback_resistance: 0.3
custom_name: "<gradient:#ff4444:#ffaa00>精英僵尸</gradient>"
custom_name_visible: true
persistent: true
loot_table: "emakimobs:entities/elite_zombie"
experience: 80
attributes:
STR: 15
VIT: 10
skills:
on_spawn:
- "nearby radius=20 type=player | send_message text='<red>精英僵尸降临!'"
on_death:
- "killer | give_exp amount=80"
threat:
enabled: true
max_range: 48.0
boss_bar:
title: "<gradient:#ff4444:#ffaa00>精英僵尸</gradient>"
color: RED
style: SEGMENTED_10
range: 60.0