命令与权限
EmakiAccessory 的命令在运行时注册,不在 paper-plugin.yml 里声明 commands: 段。
主命令 /emakiaccessory,别名 /eaccessory、/eacc。不带参数或子命令无法识别时打印帮助。
子命令
| 用法 | 权限 | 说明 |
|---|---|---|
/eacc | 无 | 打印帮助。 |
/eacc open [页] | emakiaccessory.use | 打开自己的饰品栏;省略页时打开当前启用页。 |
/eacc list | emakiaccessory.use | 列出当前启用页的饰品槽与占用情况。 |
/eacc pages | emakiaccessory.use | 列出所有饰品页、当前启用页与各页占用数量。 |
/eacc retrieve <页> | emakiaccessory.use | 取回指定页中不再被声明的孤儿槽饰品。 |
/eacc reload | emakiaccessory.reload | 重载配置、部位、饰品页与套装。 |
/eacc debug | emakiaccessory.debug | 调试开关。 |
/eacc admin <...> | emakiaccessory.admin | 管理指令,见下文。 |
open、list、pages、retrieve 只能由玩家执行。玩家数据尚未加载完成时,这些命令会提示稍后再试而不是返回空结果。
管理指令
| 用法 | 额外权限 | 说明 |
|---|---|---|
/eacc admin view <玩家> | 无 | 查看饰品(只读)。 |
/eacc admin edit <玩家> | emakiaccessory.admin.edit | 编辑饰品,仅在线玩家。 |
/eacc admin clear <玩家> | 无 | 清空饰品,不可撤销,会记入日志。 |
/eacc admin save | 无 | 立刻保存所有饰品数据。 |
四个管理子命令都先要求 emakiaccessory.admin。edit 在此之上额外要求 emakiaccessory.admin.edit——把「能看」与「能改」分成两个节点,便于只给客服查看权而不给修改权。
view 支持离线玩家:目标不在缓存中时会异步读档后以只读窗口打开。edit 只允许在线目标,因为可写窗口需要一个活的数据会话。
页面与取回
多页模型下,命令的作用范围要分清:
| 命令 | 作用范围 |
|---|---|
open [页] | 打开指定页的界面;没有该页权限时打不开 |
list | 只列出当前启用页的槽位 |
pages | 列出所有页,并标出启用页与无权限页 |
retrieve <页> | 只取回该页孤儿槽里的饰品 |
孤儿槽是「该页数据里存在、但该页 parts 已不再声明」的槽位。取回是单向操作:取出后不能再放回孤儿槽。retrieve 需要取得该玩家的写入租约,租约被占用时会提示稍后再试。
玩家失去某页权限时,该页数据不会被清除,也不会自动切换启用页;该页打不开、其饰品停止生效,玩家可用 retrieve 自行取回。
权限节点
paper-plugin.yml 声明的权限及默认值:
| 权限 | 默认 | 作用 |
|---|---|---|
emakiaccessory.use | true | 打开自己的饰品栏、列出槽位与页、取回孤儿槽。 |
emakiaccessory.reload | op | 重载配置。 |
emakiaccessory.debug | op | 调试开关。 |
emakiaccessory.admin | op | 进入管理指令。 |
emakiaccessory.admin.edit | op | 编辑他人饰品。 |
emakiaccessory.page.secondary | op | 默认副饰品页 secondary 的页权限示例。 |
本模块没有按槽位数量分级的权限。饰品槽数量完全由 parts.yml 的部位与 count 决定,不受权限影响。
页权限与命令权限是两回事:pages/*.yml 的 permission 只决定某一页能否打开与生效,逐字使用该权限串,不参与命令入口判定。默认资源只为 secondary 页声明了权限串,自建页需要自行选择权限名。
写入租约
同一个玩家的饰品数据同时只允许一个可写窗口。租约是建议性的:第二个观察者获取租约失败后转为只读窗口,仍然能看,但所有修改会被拒绝。
租约在提交路径上检查而不是渲染时检查,因此失去租约的观察者仍能看完当前画面,只是改不动。