HUD 与安全卸载
设置生命魔力条、个人开关,并正确恢复技能生命加成。
LiSkills 1.13.0 延续原生 Bukkit BossBar HUD,并适配 Folia 玩家实体线程。默认常驻显示生命和魔力,获得技能经验时再显示一条近期技能经验条,最后一次获得经验后默认保留 5 秒。因此平时两条、获得经验时最多三条,无需资源包或额外 HUD 插件。
HUD 只显示状态,不修改玩家的原版心条缩放、原版经验条、动作栏或记分板。生命数值使用玩家实际生命上限,包含服务器基础值和其他插件的有效属性加成;显示单位是生命点,2 点等于一颗心。
玩家使用
| 指令 | 用途 |
|---|---|
/lsk hud |
切换自己的 HUD 开关。 |
/lsk hud on |
开启自己的 HUD。 |
/lsk hud off |
关闭自己的 HUD,立即移除 LiSkills 的 HUD 条。 |
/lsk hud toggle |
与无参数指令相同。 |
/lsk hud status |
查看当前 HUD 状态。 |
指令提供参数补全,个人 HUD 指令需要玩家执行。权限节点为 liskills.hud,默认所有玩家拥有;HUD 显示还受 liskills.use、禁用世界、游戏模式和档案加载状态限制。个人开关随玩家原生档案保存,正常退出并重新进入后继续使用。
生命和魔力在符合显示条件时常驻;关闭整个魔力系统后不显示魔力条。技能经验条显示最近获得经验的技能、等级、本级经验进度和近期增加量。同一种技能在显示时间内连续获得经验会合并增加量并延长显示时间,切换到另一种技能后显示新的技能;达到最高等级时使用满级文本。
死亡、正常退出或个人关闭时会移除本插件创建的 HUD。普通 Paper 停用会主动移除显示;Folia 停服时区域已停止,客户端断线后清除显示,不跨线程操作仍在线的远端玩家。切换世界或游戏模式后重新判断是否显示,不移除其他插件的 BossBar。
服务器配置
HUD 配置放在 plugins/LiSkills/config.yml 的 hud 节点中。修改后使用 /lsk reload;默认配置会补全缺失节点,管理员已有配置值不需要删除。
生命和魔力按 hud.update-ticks 更新。技能经验在玩家的下一实体 tick 合并显示,到期独立隐藏,不受生命/魔力的长刷新间隔限制。Folia 中每名玩家独立领取待显示的经验,快速区域不会消费慢速区域的提示;若玩家所在区域本身暂停或卡顿,实际显示仍需等待它恢复执行。
| 配置项 | 默认值或取值范围 | 说明 |
|---|---|---|
hud.enabled |
默认 true;true / false |
全服 HUD 总开关。关闭后,个人开启也不会显示 HUD。 |
hud.default-enabled |
默认 true;true / false |
尚未设置个人偏好的玩家使用的默认开关;不覆盖玩家已保存的选择。 |
hud.update-ticks |
默认 10;整数 1–200 |
状态刷新间隔。正常 20 TPS 下,10 tick 约 0.5 秒;值越小刷新越频繁。 |
hud.experience-duration-seconds |
默认 5;整数 1–60 |
最后一次获得技能经验后,技能经验条保留的秒数。 |
hud.health.enabled |
默认 true;true / false |
是否显示生命条。 |
hud.mana.enabled |
默认 true;true / false |
是否显示魔力条,还要求魔力系统已开启。 |
hud.skill.enabled |
默认 true;true / false |
是否显示近期技能经验条。 |
hud.health.color / hud.mana.color / hud.skill.color |
默认依次 RED / BLUE / GREEN;见下方颜色列表 |
分别设置三种条的原生颜色。 |
hud.health.style / hud.mana.style / hud.skill.style |
默认均为 SOLID;见下方样式列表 |
分别设置三种条的连续或分段样式。 |
hud.health.message / hud.mana.message / hud.skill.message |
默认依次 hud.health / hud.mana / hud.skill;已存在的非空消息键 |
引用 messages.yml 中对应的 HUD 文本,不在这里直接填写显示文本。 |
hud.skill.maximum-message |
默认 hud.skill-maximum;已存在的非空消息键 |
技能满级时使用的文本键。 |
颜色可选 PINK、BLUE、RED、GREEN、YELLOW、PURPLE、WHITE。样式可选 SOLID、SEGMENTED_6、SEGMENTED_10、SEGMENTED_12、SEGMENTED_20。HUD 消息在 messages.yml 中使用 MiniMessage 配色,普通 RGB 颜色和渐变沿用插件统一文本解析;BossBar 条本身使用上述原生颜色枚举。
可用文本变量如下。变量包含大括号,例如 {health}。
| 文本 | 可用变量 |
|---|---|
| 生命和魔力文本 | {health} 当前生命、{max_health} 实际生命上限、{absorption} 额外吸收生命、{mana} 可用魔力、{max_mana} 魔力上限。 |
| 技能经验及满级文本 | 上述变量,以及 {skill} 技能名、{level} 当前等级、{xp} 当前等级已积累经验、{required} 本级升级需求、{gain} 近期增加的经验。满级时 {required} 为 0,建议使用满级专用文本。 |
生命条进度为当前生命 / 实际生命上限,不把吸收生命计入这一比例。技能经验条在满级时显示满条。
与旧经验提示的关系
hud.enabled: true 时,旧 feedback 经验条停用,避免重复显示。玩家自己执行 /lsk hud off 只关闭自己的 HUD,不会为该玩家重新开启旧 feedback;把 hud.skill.enabled 设为 false 也不会单独启用旧经验条。
将全局 hud.enabled 设为 false 后,旧经验条回退到原有 feedback 配置:只有 feedback.enabled: true 时才显示,颜色、样式和持续时间继续使用旧设置。关闭全局 HUD 不会清除玩家已经保存的个人开关。
删除插件后,技能加的血是否恢复
正常退出或正常 stop 停服完成后,再删除 LiSkills Jar,会移除 LiSkills 的生命加成。 恢复目标是“去掉 LiSkills 后玩家应有的上限”,不是统一改成 20 点生命。
这个结论不包含旧版崩溃后一直没有再次上线的玩家残留;正常停服不会批量读取历史离线档案。此类玩家应先按下方补救流程上线清理,再卸载。
例如玩家的基础生命是 30 点,另一个插件提供 4 点,LiSkills 再提供 12 点,则启用时上限为 46 点,移除 LiSkills 后回到 34 点,基础值和另一个插件的 4 点仍保留。清理按完整命名键识别 liskills:stat_health,不会因其他插件使用同名但不同命名空间的键而误删。
若玩家当前生命超过恢复后的上限,只把当前生命压到新上限;低于新上限时不额外治疗,也不凭空扣除固定数量的生命。LiSkills 的移动速度和幸运成长修饰符也会在清理时撤销,不覆盖这些属性的基础值。
普通 Bukkit/Paper 路径继续在正常停用时,清理当前线程拥有的在线玩家成长属性后立即保存玩家数据,不必等待下一次自动存档。正常退出清理仍保留。Folia 路径从 1.13.0 起使用临时属性修饰符,不把本次成长加成写入玩家 NBT;正常退出仍按自有键清理,重新上线时也清除旧版同名残留。Folia 停服通常先停止区域 tick,插件不会伪造线程归属,也不会跨区域调用玩家保存。HUD 不修改生命缩放,因此卸载时无需恢复 HUD 引起的心条缩放。
建议的卸载步骤
- 备份服务器世界中的玩家数据、LiSkills 配置及技能存储数据。Paper26.1.2 的原生玩家数据位于
world/players/data/,旧版本常为world/playerdata/;以实际主世界目录为准。如果使用外部数据库,也备份相应数据库。 - 保持 LiSkills Jar 仍在
plugins中。若之前发生过崩溃,并怀疑玩家数据残留了技能生命加成,先让受影响玩家在插件仍启用时上线并正常退出。 - 使用控制台
stop正常停服,等待玩家数据保存和服务器进程完全结束,并确认没有停用或玩家保存失败提示;若有报错,先排查再卸载。不要在运行中删 Jar,不要强制结束进程。 - 删除或移出
plugins/LiSkills-*.jar,确认没有留下另一个版本的 LiSkills Jar,再启动服务器。无需为恢复生命上限而删除 LiSkills 的技能档案;保留备份便于以后恢复使用。 - 让玩家进入,检查生命上限已扣除 LiSkills 加成;服务器原有基础值和其他插件的加成应继续存在。
崩溃和历史离线数据的边界
普通 Bukkit 属性修饰符以及旧版本留下的修饰符可能随玩家数据一起保存。强制关服、断电或崩溃时,退出及停用清理不一定有机会运行;这时直接删除 Jar,不能保证历史离线玩家的残留加成自动消失。插件不存在时无法执行修复,正常停服也不能追溯清理尚未再次加载的历史玩家档案。
如果已经删掉插件后发现残留,先停服并备份,再装回 LiSkills 及对应配置/技能档案,启动后让受影响玩家上线并正常退出,随后按上述流程正常停服并删除 Jar。不要使用“所有玩家最大生命设为 20”这类处理方式,以免覆盖服务器或其他插件设置。
Folia 新增属性通过兼容层调用公开临时修饰符接口;若服务端缺少该接口,启动会给出中文说明并安全停止,绝不偷偷改回永久加成。普通 Bukkit/Paper 保持标准 API 清理路径。两种路径都不批量修改离线玩家 NBT,Folia 的临时属性也不能追溯修复升级前残留的数据。不能把它当作断电、损坏存档或未知第三方插件行为下的绝对恢复保证。
不建议使用插件管理器热卸载、服务器 /reload 或运行中换 Jar;需要删除插件时按完整停服流程执行。Folia 的调度与跨区域限制详见 Folia 与 Shiroha 说明。
验证范围
本页说明功能与操作边界,不把代码检查或单元测试当作真人客户端视觉验证。当前构建的实际测试项目与结果以同版发行说明为准;本页不把旧版报告当作当前验收,也不宣称所有客户端、核心构建或插件组合均已实测。