怪物血条
怪物血条用于在怪物头顶显示生命值,适合 Boss、副本怪、精英怪和属性调试。
它可以做成受击后短暂显示,也可以做成附近怪物持续显示。
最小可用配置
开启后先用默认样式测试:
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|"保存后:
/gtdamage reload靠近一只怪物,应该能看到类似:
测试怪物 [||||||----] 50000/100000 50%显示模式
| mode | 效果 | 适合场景 |
|---|---|---|
hit | 怪物受击后显示一段时间 | 普通野外、低占用 |
persistent | 附近怪物持续显示血条 | Boss、副本、调试属性 |
受击显示
普通怪推荐先用这个:
mob-health:
enabled: true
mode: "hit"
display-time: 60
view-distance: 32.0效果:怪物被打后显示 3 秒左右,过期自动消失。
持续显示
Boss 或需要一直观察血量的怪物使用:
mob-health:
enabled: true
mode: "persistent"
update-interval: 10
view-distance: 32.0效果:玩家靠近怪物时显示血条,死亡、过期、离开显示范围后移除。
provider 选择
provider 决定血条用哪种显示方式。
| provider | 说明 |
|---|---|
auto | 自动选择,推荐日常使用 |
entity-name | ProtocolLib 发包修改怪物本体名字,跟随最自然,实体占用最低 |
textdisplay | 高版本 TextDisplay,独立显示,不覆盖怪物名字 |
packet-armorstand | ProtocolLib 虚拟 ArmorStand,适合低版本兜底 |
armorstand | 原生 ArmorStand 兜底 |
推荐配置:
mob-health:
provider: "auto"如果想要最丝滑的跟随效果:
mob-health:
provider: "entity-name"这个方案不会创建额外实体,移动跟随由客户端自然处理。缺点是会占用怪物本体名字位置。
如果不想覆盖怪物本体名字:
mob-health:
provider: "textdisplay"如果是 1.12.2 到 1.18.x,并且安装了 ProtocolLib:
mob-health:
provider: "packet-armorstand"血条格式
可用变量:
| 变量 | 内容 |
|---|---|
{name} | 怪物显示名 |
{health} | 当前血量 |
{max} | 最大血量 |
{percent} | 当前百分比 |
{bar} | 进度条 |
默认格式:
format: "§f{name} §8[§a{bar}§8] §c{health}§7/§c{max} §e{percent}%"简洁 Boss 样式:
format: "§c❤ §f{name} §7{health}§8/§7{max} §8[§a{bar}§8]"百分比样式:
format: "§e{name} §8- §c{percent}% §8[§a{bar}§8]"只显示数字:
format: "§f{name} §c{health}§7/§c{max}"血条长度和颜色
mob-health:
bar:
length: 20
full: "§a|"
empty: "§7|"效果:
[||||||||||----------]想做短一点:
bar:
length: 8
full: "§a■"
empty: "§8■"效果:
[■■■■□□□□]高度调整
height-offset 控制血条相对怪物头顶的高度:
mob-health:
height-offset: 0.45如果血条贴得太近:
height-offset: 0.75如果血条太高:
height-offset: 0.25entity-name provider 使用怪物本体名字位置,主要由客户端决定跟随位置,高度调节效果会比独立显示方案弱。
持续显示刷新
persistent 模式下,血量文本通过 update-interval 更新。
mob-health:
mode: "persistent"
update-interval: 10常用值:
| 值 | 说明 |
|---|---|
5 | 变化更及时,适合 Boss 少的场景 |
10 | 默认推荐,兼顾实时和性能 |
20 | 每秒刷新一次,适合大量普通怪 |
如果血量变化不刷新,先把 update-interval 调成 5 测试;确认正常后再按场景提高。
显示范围
mob-health:
view-distance: 32.0副本 Boss:
view-distance: 48.0野外大量怪物:
view-distance: 24.0范围越大,需要扫描和维护的血条越多。大量怪物场景不要把范围拉得太大。
只给攻击者显示
如果只希望参与战斗的人看到:
mob-health:
only-attacker: true注意:only-attacker 更适合 hit 模式。persistent 模式更常用附近可见玩家。
显示玩家血条
默认不显示玩家:
show-players: false如果测试 PvP 或竞技场需要显示玩家血条:
show-players: true不需要 PvP 血条时保持关闭,避免和计分板、称号、血量插件冲突。
原版爱心粒子压缩
如果原版受击爱心遮挡视野,可以启用:
damage-indicator:
enabled: true
ratio: "0"ratio 支持:
0 完全关闭原版爱心
10% 只保留 10%
50% 只保留一半
10:1 10 个压成 1 个
1000:1 1000 个压成 1 个想保留一点反馈:
damage-indicator:
enabled: true
ratio: "10%"这个功能需要 ProtocolLib。
常用方案
Boss 长血条
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、测试怪物。
野外轻量血条
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适合普通刷怪区域,血条只在战斗时出现。
低版本兼容
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} 会显示中文。
如果显示成 ZOMBIE、WITHER_SKELETON 这类英文名,检查:
- MythicMobs 怪物是否配置了
Display。 - 怪物是否有 Bukkit
CustomName。 - 其他插件是否在生成后覆盖了怪物名。
- 当前 provider 是否使用
entity-name并被其他血条插件同时覆盖。
闪烁排查
血条闪烁通常来自反复创建和销毁。正确表现应该是:
- 血量变化时只更新文本。
- 怪物死亡时销毁。
- 显示过期时销毁。
- 玩家离开范围超过宽限后销毁。
排查顺序:
- 先用
provider: "entity-name"测试是否稳定。 - 把
mode改成hit,确认受击显示是否正常。 - 把
update-interval设置为10或20,不要每 tick 刷新。 - 关闭其他怪物血条插件,避免互相覆盖名字。
- 关闭 debug,避免控制台刷屏影响整体体验。
血量不刷新
检查:
mob-health.enabled是否为true。mode是否为persistent或怪物是否刚受击。update-interval是否设置过大。- 怪物是否实际掉血。
- 其他插件是否把血量显示覆盖回旧文本。
测试时可以用:
mob-health:
enabled: true
mode: "persistent"
provider: "entity-name"
update-interval: 5确认刷新正常后再切回正式方案。
性能建议
高密度场景推荐:
mob-health:
enabled: true
mode: "hit"
provider: "auto"
display-time: 40
update-interval: 20
view-distance: 24.0Boss 场景推荐:
mob-health:
enabled: true
mode: "persistent"
provider: "auto"
update-interval: 10
view-distance: 48.0原则:
- 普通怪用
hit。 - Boss 用
persistent。 - 范围按地图实际大小设置。
- 不要让所有普通怪长期持续显示。
- 已安装 ProtocolLib 时优先尝试
entity-name。
