Skip to content

生物定义

生物定义文件位于 plugins/EmakiMobs/mobs/*.yml,每个文件对应一种自定义生物。

顶层字段

字段类型必填说明
idstring生物唯一 ID。若与原版 EntityType 名称完全一致(如 zombie),则自动启用类型覆写
typestring原版实体类型名(如 zombieskeletoncreeper);省略时默认与 id 相同。
display_namestring生物的显示名称,支持 MiniMessage 格式,用于后台日志和管理命令展示。
experienceint击杀该生物掉落的原版经验值。默认 0
componentssection直接映射到 Minecraft 实体属性的字段。详见组件参考
attributessectionEmakiAttribute 属性值映射(需安装 EmakiAttribute)。
skillssection技能触发器映射(需安装 EmakiSkills)。详见技能触发器
threatsection威胁仇恨表配置。省略时不启用威胁系统。
boss_barsectionBoss 血条配置。省略时不显示血条。

类型覆写

id 与一个有效的原版 EntityType 名称完全一致时(大小写不敏感),EmakiMobs 会对所有自然刷新的该类型生物自动应用此定义的 componentsattributes,无需在 spawn_rules/ 中额外配置。

yaml
# 对所有原版僵尸应用加强属性
id: zombie
type: zombie
components:
  max_health: 22.0
  attack_damage: 3.5

CAUTION

⚠ 类型覆写会影响服务器上所有自然刷新的该类型生物,包括其他插件产生的同类型生物。如只需特定区域的自定义生物,使用独立 id 配合 spawn_rules/type: natural 规则。

attributes 字段

yaml
attributes:
  STR: 15      # 键名与 EmakiAttribute 中定义的属性 ID 一致
  VIT: 10
  AGI: 5

threat 字段

字段类型默认值说明
enabledbooleantrue是否启用威胁系统。
max_rangedouble64.0超出此范围(格)的玩家不计入威胁。
weights.damagedouble1.0每点伤害产生的威胁值。
weights.healingdouble0.5每点治疗队友产生的威胁值。
decay.ratedouble0.05每秒威胁自然衰减比例(0.05 = 5%/秒)。
decay.out_of_rangebooleantrue玩家离开 max_range 后立即清空其威胁。

boss_bar 字段

字段类型默认值说明
titlestring""血条标题,支持 MiniMessage 格式。
colorstringPURPLE血条颜色:PINK / BLUE / RED / GREEN / YELLOW / PURPLE / WHITE
stylestringSOLID血条风格:SOLID / SEGMENTED_6 / SEGMENTED_10 / SEGMENTED_12 / SEGMENTED_20
rangedouble64.0在此范围(格)内的玩家可见血条。

colorstyle 的取值不区分大小写,对应 paper-api 的 BarColor / BarStyle 枚举。

非法取值会静默回退

colorstylevalueOf 解析,解析失败时不报错、不打日志,直接回退到默认值(colorPURPLEstyleSOLID)。

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