简体中文
命令与权限
EmakiAccessory 的全部命令如下, 每条命令要什么权限, 管理员指令怎么用, 以及为什么同一个玩家的饰品数据同时只能由一个窗口改写
EmakiAccessory 的命令在运行时注册, 所以你不会在 paper-plugin.yml 里看到 commands: 段
主命令是 /emakiaccessory, 别名 /eaccessory, /eacc. 你不带参数, 或输入了无法识别的子命令时, 会打印帮助
子命令
| 用法 | 权限 | 说明 |
|---|---|---|
/eacc, /eacc help | emakiaccessory.use | 打印帮助 |
/eacc open [页] | emakiaccessory.use | 打开自己的饰品栏; 省略页时打开当前启用页 |
/eacc list | emakiaccessory.use | 列出当前启用页的饰品槽与占用情况 |
/eacc pages | emakiaccessory.use | 列出所有饰品页, 当前启用页, 各页占用数量与无权限页 |
/eacc retrieve <页> | emakiaccessory.use | 取回该页全部饰品 (已声明槽位与孤儿槽一并取出, 放回背包, 放不下的掉在脚下) |
/eacc reload | emakiaccessory.reload | 重载配置, 部位, 饰品页与套装, 并回显槽位数, 套装数与问题数 |
/eacc debug | emakiaccessory.debug | 转发给 CoreLib 的调试子命令; 调试功能不可用时提示 command.debug_unavailable |
/eacc admin <...> | emakiaccessory.admin | 管理指令, 见下文 |
无法识别的子命令与空参数都会打印帮助. help 不是独立分支, 而是未命中任何子命令时的默认行为 (补全列表里会列出它)
你可以在控制台执行 reload 与 debug; open, list, pages, retrieve 以及 admin view, admin edit 只能由玩家执行, 在控制台执行会收到"只能由玩家执行"提示. 玩家数据尚未加载完成时, 这些命令会提示稍后再试 (general.data_loading), 而不是返回空结果
注册根命令时声明了 emakiaccessory.use, 这是命令入口的权限要求; 各子命令在此之上再按上表校验自己的权限节点. 该权限默认 true, 所以默认配置下不影响使用
管理指令
| 用法 | 额外权限 | 说明 |
|---|---|---|
/eacc admin view <玩家> | 无 | 只读查看饰品; 目标不在缓存中时会异步读档再打开, 读档失败提示 command.admin_load_failed |
/eacc admin edit <玩家> | emakiaccessory.admin.edit | 可写编辑饰品, 仅限在线 (已加载) 目标; 目标不在缓存中提示 command.admin_target_offline |
/eacc admin clear <玩家> | 无 | 清空该玩家全部页的饰品, 不可撤销, 逐条记入日志 (页, 槽位, 材质, 数量, 名称); 目标未加载时提示 command.admin_target_offline |
/eacc admin save | 无 | 立刻保存所有还没写到文件的改动, 并回显保存份数 |
四个管理子命令都先要求 emakiaccessory.admin. edit 在此之上额外要求 emakiaccessory.admin.edit -- 这样把"能看"与"能改"分成两个节点, 你可以只给客服查看权而不给修改权
view 与 edit 要由玩家执行; clear 与 save 可以在控制台执行. <玩家> 先按在线名精确匹配, 再按离线缓存名查找, 都找不到时提示 command.unknown_player
view 支持离线玩家: 目标不在缓存中时会异步读档, 再以只读窗口打开. edit 只允许在线目标, 因为可写窗口需要一个活着的数据会话; 目标已被别的观察者取得写入租约 (同一玩家同时只能有一个可写窗口的占用许可) 时提示 command.admin_target_busy
clear 不发还物品, 只清数据; 它同样要求目标当前没有其他写入者
页面与取回
饰品栏有多页, 你要先分清每条命令的作用范围:
| 命令 | 作用范围 |
|---|---|
open [页] | 打开指定页的界面; 页不存在或没有该页权限时打不开 |
list | 只列出当前启用页的槽位 |
pages | 列出所有页, 并标出启用页与无权限页 |
retrieve <页> | 取回该页全部饰品 (含已声明槽位与孤儿槽) |
孤儿槽是"该页数据里存在, 但该页 parts 已不再声明"的槽位. retrieve 不管槽位是否还被声明, 会逐格取出该页所有物品, 经由背包发还 (放不下时掉在脚下), 然后从数据里删除; 取出的物品不能再放回孤儿槽. 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 页声明了权限串, 自建页需要自行选择权限名
写入租约
同一个玩家的饰品数据同时只允许一个可写窗口. 这条租约是提醒性质的: 第二个观察者取不到租约时会转成只读窗口, 仍然能看, 但你的所有修改都会被拒绝
租约是在真正提交改动时检查的, 不是在刷新画面时检查, 所以失去租约的观察者仍能看完当前画面, 只是改不动