认识自动替换
自动替换用于接管玩家原本会看到的生存背包或箱子界面。它最重要的用途,是美化已经存在的第三方插件菜单:插件继续创建原版箱子、摆放菜单物品并监听库存事件,ChaUI 根据页面规则自动替换外观。
第三方插件不需要调用 ChaUI API,也不需要知道页面 ID。管理员只要制作并保存替换页面,玩家下一次打开匹配容器时就会自动看到新界面。
当前支持范围
| 目标 | target | 当前范围 |
|---|---|---|
| 生存背包 | player_inventory | 生存模式玩家背包,包括背包、主副手、盔甲和合成区域。 |
| 通用箱子 | chest | 顶部区域为 1 至 6 行的通用箱子界面,包括许多插件创建的菜单。 |
创造模式背包、熔炉、铁砧、锻造台和村民交易等专用界面不属于第一版自动替换范围。未支持的界面会继续显示原版页面。
一次打开会发生什么
- 玩家或第三方插件打开原版背包/箱子。
- 客户端用标题、行数和优先级寻找候选页面。
- 服务端根据玩家当前真实容器再次确认。
- 确认成功后,ChaUI 页面接管绘制、布局、组件命中和页面生命周期。
- 原版容器继续负责物品、光标、拖拽、网络同步和 Bukkit 库存事件。
因此,替换页面不是把第三方菜单复制成另一份虚拟菜单。它更像给当前真实容器换了一套皮肤和交互布局。
与普通 ChaUI 页面有什么不同
| 普通页面 | 容器替换页面 |
|---|---|
| 由页面打开入口或业务 API 打开。 | 打开匹配原版容器时自动出现。 |
| 普通物品槽通过 ChaUI 槽位服务端裁决。 | containerBinding 绑定的物品槽委托当前原版容器。 |
| 按钮脚本通常直接执行页面动作。 | 绑定按钮先点击原版槽位,再执行自己的点击脚本。 |
| 页面关闭只结束 ChaUI 页面。 | 页面与原版容器一起关闭,或在 reload 时原地重新匹配。 |
推荐学习顺序
- 先完成替换第一个箱子界面。
- 用箱子匹配规则为不同插件菜单分配页面。
- 用槽位、按钮与物品信息映射插件按钮和 Lore。
- 需要重做生存背包时阅读替换玩家背包。
- 上线前检查安全回退与排错。
安全边界
客户端只负责显示与提交原版容器操作,不能凭页面内容决定服务端物品。服务端会确认玩家当前容器、页面规则和会话身份。页面不匹配、配置冲突、版本不一致或确认失败时,ChaUI 会保留或恢复原版界面,避免玩家被困在无法操作的页面中。
猹件开发组