Skip to content

怪物血条

怪物血条用于在怪物头顶显示生命值,适合 Boss、副本怪、精英怪和属性调试。
它可以做成受击后短暂显示,也可以做成附近怪物持续显示。

最小可用配置

开启后先用默认样式测试:

yaml
mob-health:
  enabled: true
  mode: "persistent"
  provider: "auto"
  format: "§f{name} §8[§a{bar}§8] §c{health}§7/§c{max} §e{percent}%"
  display-time: 40
  update-interval: 10
  height-offset: 0.45
  view-distance: 32.0
  show-players: false
  only-attacker: false
  hide-at-zero: true
  decimal-places: 0
  bar:
    length: 10
    full: "§a|"
    empty: "§7|"

保存后:

text
/gtdamage reload

靠近一只怪物,应该能看到类似:

text
测试怪物 [||||||----] 50000/100000 50%

显示模式

mode效果适合场景
hit怪物受击后显示一段时间普通野外、低占用
persistent附近怪物持续显示血条Boss、副本、调试属性

受击显示

普通怪推荐先用这个:

yaml
mob-health:
  enabled: true
  mode: "hit"
  display-time: 60
  view-distance: 32.0

效果:怪物被打后显示 3 秒左右,过期自动消失。

持续显示

Boss 或需要一直观察血量的怪物使用:

yaml
mob-health:
  enabled: true
  mode: "persistent"
  update-interval: 10
  view-distance: 32.0

效果:玩家靠近怪物时显示血条,死亡、过期、离开显示范围后移除。

provider 选择

provider 决定血条用哪种显示方式。

provider说明
auto自动选择,推荐日常使用
entity-nameProtocolLib 发包修改怪物本体名字,跟随最自然,实体占用最低
textdisplay高版本 TextDisplay,独立显示,不覆盖怪物名字
packet-armorstandProtocolLib 虚拟 ArmorStand,适合低版本兜底
armorstand原生 ArmorStand 兜底

推荐配置:

yaml
mob-health:
  provider: "auto"

如果想要最丝滑的跟随效果:

yaml
mob-health:
  provider: "entity-name"

这个方案不会创建额外实体,移动跟随由客户端自然处理。缺点是会占用怪物本体名字位置。

如果不想覆盖怪物本体名字:

yaml
mob-health:
  provider: "textdisplay"

如果是 1.12.2 到 1.18.x,并且安装了 ProtocolLib:

yaml
mob-health:
  provider: "packet-armorstand"

血条格式

可用变量:

变量内容
{name}怪物显示名
{health}当前血量
{max}最大血量
{percent}当前百分比
{bar}进度条

默认格式:

yaml
format: "§f{name} §8[§a{bar}§8] §c{health}§7/§c{max} §e{percent}%"

简洁 Boss 样式:

yaml
format: "§c❤ §f{name} §7{health}§8/§7{max} §8[§a{bar}§8]"

百分比样式:

yaml
format: "§e{name} §8- §c{percent}% §8[§a{bar}§8]"

只显示数字:

yaml
format: "§f{name} §c{health}§7/§c{max}"

血条长度和颜色

yaml
mob-health:
  bar:
    length: 20
    full: "§a|"
    empty: "§7|"

效果:

text
[||||||||||----------]

想做短一点:

yaml
bar:
  length: 8
  full: "§a■"
  empty: "§8■"

效果:

text
[■■■■□□□□]

高度调整

height-offset 控制血条相对怪物头顶的高度:

yaml
mob-health:
  height-offset: 0.45

如果血条贴得太近:

yaml
height-offset: 0.75

如果血条太高:

yaml
height-offset: 0.25

entity-name provider 使用怪物本体名字位置,主要由客户端决定跟随位置,高度调节效果会比独立显示方案弱。

持续显示刷新

persistent 模式下,血量文本通过 update-interval 更新。

yaml
mob-health:
  mode: "persistent"
  update-interval: 10

常用值:

说明
5变化更及时,适合 Boss 少的场景
10默认推荐,兼顾实时和性能
20每秒刷新一次,适合大量普通怪

如果血量变化不刷新,先把 update-interval 调成 5 测试;确认正常后再按场景提高。

显示范围

yaml
mob-health:
  view-distance: 32.0

副本 Boss:

yaml
view-distance: 48.0

野外大量怪物:

yaml
view-distance: 24.0

范围越大,需要扫描和维护的血条越多。大量怪物场景不要把范围拉得太大。

只给攻击者显示

如果只希望参与战斗的人看到:

yaml
mob-health:
  only-attacker: true

注意:only-attacker 更适合 hit 模式。persistent 模式更常用附近可见玩家。

显示玩家血条

默认不显示玩家:

yaml
show-players: false

如果测试 PvP 或竞技场需要显示玩家血条:

yaml
show-players: true

不需要 PvP 血条时保持关闭,避免和计分板、称号、血量插件冲突。

原版爱心粒子压缩

如果原版受击爱心遮挡视野,可以启用:

yaml
damage-indicator:
  enabled: true
  ratio: "0"

ratio 支持:

text
0        完全关闭原版爱心
10%      只保留 10%
50%      只保留一半
10:1     10 个压成 1 个
1000:1   1000 个压成 1 个

想保留一点反馈:

yaml
damage-indicator:
  enabled: true
  ratio: "10%"

这个功能需要 ProtocolLib。

常用方案

Boss 长血条

yaml
mob-health:
  enabled: true
  mode: "persistent"
  provider: "auto"
  format: "§c❤ §f{name} §8[§a{bar}§8] §c{health}§7/§c{max} §e{percent}%"
  update-interval: 5
  height-offset: 0.6
  view-distance: 48.0
  decimal-places: 0
  bar:
    length: 20
    full: "§a|"
    empty: "§7|"

适合副本 Boss、世界 Boss、测试怪物。

野外轻量血条

yaml
mob-health:
  enabled: true
  mode: "hit"
  provider: "auto"
  format: "§f{name} §c{health}§7/§c{max}"
  display-time: 50
  view-distance: 24.0
  decimal-places: 0

适合普通刷怪区域,血条只在战斗时出现。

低版本兼容

yaml
mob-health:
  enabled: true
  mode: "hit"
  provider: "packet-armorstand"
  display-time: 60
  height-offset: 0.45
  view-distance: 28.0

如果发包 provider 不可用,会回退到原生 ArmorStand。

中文怪物名

GTDamage 会优先读取怪物显示名。MythicMobs 怪物如果配置了中文显示名,血条里的 {name} 会显示中文。

如果显示成 ZOMBIEWITHER_SKELETON 这类英文名,检查:

  1. MythicMobs 怪物是否配置了 Display
  2. 怪物是否有 Bukkit CustomName
  3. 其他插件是否在生成后覆盖了怪物名。
  4. 当前 provider 是否使用 entity-name 并被其他血条插件同时覆盖。

闪烁排查

血条闪烁通常来自反复创建和销毁。正确表现应该是:

  • 血量变化时只更新文本。
  • 怪物死亡时销毁。
  • 显示过期时销毁。
  • 玩家离开范围超过宽限后销毁。

排查顺序:

  1. 先用 provider: "entity-name" 测试是否稳定。
  2. mode 改成 hit,确认受击显示是否正常。
  3. update-interval 设置为 1020,不要每 tick 刷新。
  4. 关闭其他怪物血条插件,避免互相覆盖名字。
  5. 关闭 debug,避免控制台刷屏影响整体体验。

血量不刷新

检查:

  1. mob-health.enabled 是否为 true
  2. mode 是否为 persistent 或怪物是否刚受击。
  3. update-interval 是否设置过大。
  4. 怪物是否实际掉血。
  5. 其他插件是否把血量显示覆盖回旧文本。

测试时可以用:

yaml
mob-health:
  enabled: true
  mode: "persistent"
  provider: "entity-name"
  update-interval: 5

确认刷新正常后再切回正式方案。

性能建议

高密度场景推荐:

yaml
mob-health:
  enabled: true
  mode: "hit"
  provider: "auto"
  display-time: 40
  update-interval: 20
  view-distance: 24.0

Boss 场景推荐:

yaml
mob-health:
  enabled: true
  mode: "persistent"
  provider: "auto"
  update-interval: 10
  view-distance: 48.0

原则:

  • 普通怪用 hit
  • Boss 用 persistent
  • 范围按地图实际大小设置。
  • 不要让所有普通怪长期持续显示。
  • 已安装 ProtocolLib 时优先尝试 entity-name