跳到主要内容

绑定与 UI

绑定来源

MatrixShop 当前的命令绑定主要来自两类配置:

  1. 模块级 settings.yml
  2. 入口级 shops/*.yml

其中:

  • ChestShop / Cart / Record 仍主要由 settings.yml 驱动
  • Menu / SystemShop / PlayerShop / GlobalMarket / Auction / Transaction 主要由 shops/*.yml 驱动

当前绑定写法

MatrixShop 1.8.0 开始,绑定方式改成类似 TrMenu 的直接文本风格:

Bindings:
Commands:
- "trade"
- "tm"
Register: true
Show-In-Help: true
Priority: 100

这表示:

  • Commands:直接写绑定命令列表
  • Register:是否注册为独立命令
  • Show-In-Help:是否在帮助里显示
  • Priority:冲突时优先级

不再需要先去 Lang/*.yml 里维护 commands.routes.xxx 再间接引用。

路由级写法

子命令路由也支持直接写文本:

Routes:
open:
Action: transaction.open
Bindings:
- "open"

这类配置主要用于 /trade open/cart checkout 这样的模块内路由。

菜单结构

典型菜单文件仍然由这些字段组成:

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 支持:

  • close
  • back
  • tell:...
  • sound:...
  • player:...
  • console:...
  • js:...
  • kether: ...

推荐优先使用 kether: 写业务动作。

推荐写法

actions:
left:
- "kether: matrixshop system open weapon"

不推荐写法

actions:
left:
- "kether: command \"weapon\" by player"

后者虽然旧版可工作,但已经不是 1.8.0 推荐路径。

shopId 规则

当前实现里,shopId 默认取自文件名,而不是依赖 YAML 内部 id 字段:

shops/<file-name>.yml

例如:

  • PlayerShop/shops/default.yml -> default
  • Menu/shops/main.yml -> main

重载与重启

/matrixshopadmin reload 可以刷新大部分配置,但对于“独立命令注册”本身,仍建议完整重启服务器后再验证。