Skip to content

命令与权限

EmakiAccessory 的命令在运行时注册,不在 paper-plugin.yml 里声明 commands: 段。

主命令 /emakiaccessory,别名 /eaccessory/eacc。不带参数或子命令无法识别时打印帮助。

子命令

用法权限说明
/eacc打印帮助。
/eacc open [页]emakiaccessory.use打开自己的饰品栏;省略页时打开当前启用页。
/eacc listemakiaccessory.use列出当前启用页的饰品槽与占用情况。
/eacc pagesemakiaccessory.use列出所有饰品页、当前启用页与各页占用数量。
/eacc retrieve <页>emakiaccessory.use取回指定页中不再被声明的孤儿槽饰品。
/eacc reloademakiaccessory.reload重载配置、部位、饰品页与套装。
/eacc debugemakiaccessory.debug调试开关。
/eacc admin <...>emakiaccessory.admin管理指令,见下文。

openlistpagesretrieve 只能由玩家执行。玩家数据尚未加载完成时,这些命令会提示稍后再试而不是返回空结果。

管理指令

用法额外权限说明
/eacc admin view <玩家>查看饰品(只读)。
/eacc admin edit <玩家>emakiaccessory.admin.edit编辑饰品,仅在线玩家
/eacc admin clear <玩家>清空饰品,不可撤销,会记入日志。
/eacc admin save立刻保存所有饰品数据。

四个管理子命令都先要求 emakiaccessory.adminedit 在此之上额外要求 emakiaccessory.admin.edit——把「能看」与「能改」分成两个节点,便于只给客服查看权而不给修改权。

view 支持离线玩家:目标不在缓存中时会异步读档后以只读窗口打开。edit 只允许在线目标,因为可写窗口需要一个活的数据会话。

页面与取回

多页模型下,命令的作用范围要分清:

命令作用范围
open [页]打开指定页的界面;没有该页权限时打不开
list只列出当前启用页的槽位
pages列出所有页,并标出启用页与无权限页
retrieve <页>只取回该页孤儿槽里的饰品

孤儿槽是「该页数据里存在、但该页 parts 已不再声明」的槽位。取回是单向操作:取出后不能再放回孤儿槽。retrieve 需要取得该玩家的写入租约,租约被占用时会提示稍后再试。

玩家失去某页权限时,该页数据不会被清除,也不会自动切换启用页;该页打不开、其饰品停止生效,玩家可用 retrieve 自行取回。

权限节点

paper-plugin.yml 声明的权限及默认值:

权限默认作用
emakiaccessory.usetrue打开自己的饰品栏、列出槽位与页、取回孤儿槽。
emakiaccessory.reloadop重载配置。
emakiaccessory.debugop调试开关。
emakiaccessory.adminop进入管理指令。
emakiaccessory.admin.editop编辑他人饰品。
emakiaccessory.page.secondaryop默认副饰品页 secondary 的页权限示例。

本模块没有按槽位数量分级的权限。饰品槽数量完全由 parts.yml 的部位与 count 决定,不受权限影响。

页权限与命令权限是两回事:pages/*.ymlpermission 只决定某一页能否打开与生效,逐字使用该权限串,不参与命令入口判定。默认资源只为 secondary 页声明了权限串,自建页需要自行选择权限名。

写入租约

同一个玩家的饰品数据同时只允许一个可写窗口。租约是建议性的:第二个观察者获取租约失败后转为只读窗口,仍然能看,但所有修改会被拒绝。

租约在提交路径上检查而不是渲染时检查,因此失去租约的观察者仍能看完当前画面,只是改不动。