跳转到正文
iPlugin

HUD

常驻 HUD、布局绑定与 ActionBar 接管字段参考

先准备字体、图片和Layout。HUD 文件位于 core/display/huds,顶层节点是 HUD ID;它只引用已经存在的 Layout。

文件关系

font/
image/
tutorial.yml
tutorial.yml

完整结构

下例复用自带 hud_info 和入门 Layout的 tutorial_welcome。

main:
  enabled: true
  order: 0
  refresh: 10
  layouts:
    hud_info: {}
    tutorial_welcome:
      refresh: 5
      condition: |
        perm xerr.hud
      variables:
        title: "玩家信息"

HUD 字段

字段类型 / 省略值范围说明生效
顶层节点字符串非空、全局唯一HUD ID打包
enabled布尔 / truetrue/false是否启用这个 HUD重载
order整数 / 0任意整数多个 HUD 的组合顺序,数字小的先处理重载
refresh整数 / 无1~1200 tick当前 HUD 的默认内容刷新间隔重载
layouts映射 / 必填且非空Layout ID 到绑定配置按 YAML 顺序组合 Layout重载¹

layouts 绑定字段

layouts:
  hud_info: {}
  tutorial_welcome:
    refresh: 10
    condition: |
      perm quest.hud
    variables:
      title: "主线任务"
字段类型 / 省略值说明生效
Layout ID字符串 / 必填要显示的全局 Layout ID重载¹
refresh整数 1~1200 / 继承 HUD当前绑定的刷新间隔重载
conditionKether / 无返回 true 时显示整个 Layout重载
variables字符串映射 / 空传给 Layout 的变量重载

{} 表示只引用 Layout,不覆盖任何绑定参数。

¹ 只切换已经打进客户端资源包的 Layout 时可以重载;新建 Layout 或修改其坐标、图片、字体后仍需 /xerr pack。

ActionBar 接管

常驻 HUD、信息栏和弹窗统一通过 BossBar 显示,不再选择显示通道。最终内容未变化时不会重复发送。

需要将原版或其它插件的 ActionBar 文字显示在 HUD 中时,在 config.yml 开启接管:

config.yml 中的 feature 节点
feature:
  actionbar:
    enable: true

接管默认关闭。开启后,在布局中通过 {{ get @actionbar }} 读取当前消息。Xerr 保留文字颜色和粗斜体,字体、背景与位置由布局决定;新消息覆盖上一条,消息到期后清空,不会把消息 JSON 当作文字显示。

自带 HUD 已引用 actionbar 布局;已有项目请确认这个 HUD 已启用:

core/display/huds/default.yml 中的 action 节点
action:
  enabled: true
  layouts:
    actionbar:
      refresh: 5

默认布局位于快捷栏上方,并复用信息栏的公告背景:

plugins/Xerr/core/layout/actionbar.yml
defaults:
  font: pixel

actionbar:
  message:
    anchor:
      x: 50
      y: 100
    align: center
    y: 82
    value: "&f{{ get @actionbar }}"
    background:
      id: stack_announcement
      y: 85

布局现在使用统一的 BossBar 定位,不再依赖原版 ActionBar 的绘制位置。消息变化、清空或到期时会刷新内容,无需将 refresh 改成 1。

关闭接管后,消息继续由原版 ActionBar 显示。普通聊天不会被拦截;没有启用 HUD 或消息无法解析时,原消息也会放行。

修改接管开关或 HUD 启用状态后执行 /xerr reload;新增布局或修改字体、坐标、背景后,执行 /xerr pack 并让客户端加载新资源包。