绑定与 UI
命令绑定来源
MatrixShop 的命令不只来自固定代码,还来自配置:
- 模块级
settings.yml - 入口级
shops/*.yml
模块级绑定由 ModuleBindings 读取,入口级绑定由 ShopMenuLoader 读取。
绑定字段
这组字段在模块和入口里通用:
Bindings:
Commands:
Bindings:
- 'market'
- 'gm'
Register: true
Show-In-Help: true
Priority: 100
含义:
Bindings:命令关键字列表Register:是否注册为独立命令Show-In-Help:是否出现在/ms helpPriority:冲突时优先级
如果你需要:
- 自定义多行帮助
- 自定义帮助描述键
- 自定义子命令提示键
请继续看:
shopId 规则
当前实现里,shopId 不再依赖 YAML 内部的 id 字段,而是直接取:
shops/<file-name>.yml
例如:
PlayerShop/shops/default.yml->defaultMenu/shops/main.yml->main
这条规则非常重要,因为它会影响:
/ms open <shop-id>/ms open <type:id>- 多商店模块的数据作用域
菜单结构
菜单文件的核心字段如下:
Title:
- '&8Global Market &7{page}/{max-page}'
layout:
- '#########'
- '#ggggggg#'
icons:
'#':
material: 'STAINED_GLASS_PANE'
name: ' '
'g':
material: 'AIR'
mode: 'goods'
关键规则
layout每行 9 格icons里每个字符都对应一种图标定义- 带
mode:的格子会交给模块代码渲染动态内容 - 没有
mode:的格子会按静态图标直接渲染
动作语法
ActionExecutor 当前支持这些动作:
closebacktell:消息sound:SOUND-VOLUME-PITCH- 其他任意字符串:作为玩家命令执行
例如:
actions:
left:
- 'matrixshop open systemshop:weapon'
- 'sound:ui_button_click-1-1'
这意味着大多数按钮跳转其实都是“把一条命令当动作执行”,而不是写死在 UI 系统里。
重载与重启的区别
/matrixshopadmin reload 会重新加载配置和模块,但有一个边界要注意:
/ms这种主入口绑定可以随重载更新- 独立命令注册只发生在插件启动时
所以如果你改了 Bindings.Commands.Register 或独立命令关键字,最好完整重启服务器。