Skip to content
On this page

箱子匹配规则

一个服务器往往同时有商店、小游戏选择、锻造、仓库和任务菜单。ChaUI 通过标题、行数与优先级选择唯一替换页面,不要求这些插件主动接入。

完整的最小箱子页面

下面配置可以直接保存为 pages/game_menu.yml。它匹配标题以“小游戏”开头的 3 行或 6 行箱子。elements 暂时为空,确认匹配后再用编辑器添加组件。

yaml
id: game_menu
version: 1
title: 小游戏菜单替换
size:
  width: window.width
  height: window.height
coordinateMode: absolute
display:
  mode: container
  container:
    target: chest
    title:
      mode: prefix
      value: 小游戏
    rows:
      - 3
      - 6
    priority: 50
elements: []

标题模式

标题使用玩家客户端实际看到的文字,并在匹配前去掉 § 颜色样式。

模式行为示例值可匹配标题
exact完全相同小游戏菜单只匹配“小游戏菜单”
prefix以指定文字开头小游戏“小游戏菜单”“小游戏:空岛”
contains包含指定文字锻造“高级锻造台”“锻造确认”
any接受任意标题不填写 value所有符合行数的箱子

标题匹配区分大小写和空格。插件若在标题中加入页码,可以使用 prefixcontains;标题完全固定时优先使用 exact,这样最不容易误匹配。

行数 rows

rows 只填写 16,可以写一个或多个且不能重复:

yaml
rows:
  - 3
  - 6

空列表表示不限制行数。建议已知菜单尺寸时明确填写,因为它既能减少误匹配,也会在同优先级和同标题模式下比“不限制行数”的页面更具体。

优先级与唯一选择

候选页面按以下顺序比较:

  1. priority 数字更高者优先。
  2. 优先级相同时,标题具体程度为 exact > prefix > contains > any
  3. 仍相同时,填写了行数限制的页面优先于不限制行数的页面。

如果比较完仍有两个页面并列,ChaUI 不会按文件名随意选择,而是记录冲突并显示原版界面。这样能避免一次配置顺序变化就替换成错误页面。

常用设计方式

每个插件菜单一张页面

标题固定的菜单使用 exact,并填写真实行数。这是最稳定的方式。

同系列菜单共用一张页面

分页商店可以使用 prefix,例如标题都以“服务器商店”开头。页面按钮再通过固定槽位或脚本动态绑定处理不同页内容。

通用兜底皮肤

可以准备一个低优先级的 any 页面,美化尚未单独适配的箱子。务必设置较低优先级,并先在测试服确认它不会遮盖管理或安全相关菜单。

修改后何时生效

在编辑器保存单页后,新配置会进入当前页面缓存。执行 ChaUI reload 时,正在打开的第三方容器不会被强制关闭:旧替换页面先完成关闭生命周期,再在同一个原版容器上重新匹配;没有新匹配时直接恢复原版界面。