跳到主要内容

设计特色

云血条的目标:能自订图片与字体,设定直观、开箱就好看,并且把跟随与性能做到最好。

一张表看特色​

项目CloudHealthBar 云血条
设定方式一个样式写完一种血条(styles/),怪物规则一个 mobs.yml
默认外观普通 / 精英 / 首领三种手绘血条、残影、前缘发光、像素数字、图标
叠图方式不改任何着色器:每一层是独立的显示实体,往镜头方向错开,和其他资源包不冲突
跟随封包骑乘:客户端每一帧跟着怪物,服务器不送传送封包
高度每只怪物可写;CloudModel 模型自动对准模型头顶;高度是真正的垂直方向,大型模型也不会随视角歪掉
显示时机被打(攻击者 / 附近玩家)、准星、靠近(距离可调)、一直显示
MythicMobs每只怪物两行(enable + health-bar),或用 * ? 通配批量设定(例如 *boss* 全部用首领血条)+ 默认规则
原版生物可以整个关闭,再单独开凋灵、监守者等几种
字体TTF 直接交给客户端渲染(fonts.yml),也支持位图字体
资源包资料夹 + zip、自带下载服务、自动写进 CraftEngine 合并列表并重载、复制到 ItemsAdder
原本的名字显示血条时只对那位玩家隐藏怪物原本的名字牌,不会重复两次

为什么跟得这么顺​

血条在客户端是好几个「显示实体」叠在一起(底框、残影、血量、外框、文字),它们骑在一个宽度为 0 的隐形支点上,支点再骑在怪物身上:

怪物
└─ 支点(看不见、打不到,高度 = 血条离头顶多高)
├─ 底框
├─ 残影
├─ 血量
├─ 外框刻度
└─ 文字(名字、数字、药水图标)

骑乘位置由客户端每一帧计算,所以怪物怎么跑、怎么被击退,血条都贴在头顶。服务器只在血量或文字真的改变时送一个很小的更新封包, 怪物移动时完全不用送封包。

为什么不卡服​

  • 服务器上没有任何实体,全部是封包;只有正在被看到的血条才会运算。
  • 血量、名字、药水效果没变时,文字不会重新组装。
  • 准星检查只有在规则用到「准星」时才执行;靠近检查只扫附近一小块范围,「一直显示」用的大范围每 4 次才扫一次。
  • 资源包内容没变时,开服只重建对照表,不重写上千张图片。

导入 BetterHealthBar 的设定​

  1. 装好云血条,开服一次。
  2. 执行 /chb import betterhealthbar:BetterHealthBar 里写过的 MythicMobs 怪物会加进 mobs.yml(blacklist: true 的变成不显示,height 保留)。
  3. 确认没问题后移除 BetterHealthBar,以及它在资源包里的 betterhealthbar 资料夹。
提示

BetterHealthBar 的 height 和云血条的 height 都是「再往上几格」,但两边的基准高度不完全一样,导入后建议用 /chb show 看一下再微调。