Skip to content

命令与权限

EmakiStation 的命令在运行时注册,不在 paper-plugin.yml 里声明 commands: 段。这与系列内其他模块一致。

主命令 /emakistation,别名 /estation/est。不带参数或子命令无法识别时打印帮助。

子命令

用法权限说明
/emakistation打印帮助。
/emakistation open <工作站>emakistation.use + 该工作站访问权限打开工作站界面。
/emakistation dismantle <工作站>emakistation.dismantle + 该分解站访问权限打开分解界面。
/emakistation queueemakistation.use查看自己的队列。
/emakistation claimemakistation.use领取待领取的产物。
/emakistation cancel <工作站> <序号>emakistation.use取消队列条目。
/emakistation list [工作站]emakistation.use列出工作站,或列出某工作站的配方。
/emakistation reloademakistation.reload重载配置、工作站、配方与界面模板。
/emakistation debugemakistation.debug调试开关,参数与其他模块的 debug 子命令一致。
/emakistation admin queue <玩家>emakistation.admin查看指定玩家的队列,会异步加载离线玩家数据。玩家名必须在服务端缓存中,否则报未知玩家。

opencancellist 的第二个参数会补全为已加载的合成工作站 id;dismantle 补全为已加载的分解站 id。第一个参数的补全表还包含 help

权限节点

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

权限默认作用
emakistation.usetrue使用工作站界面与队列相关子命令。
emakistation.purchasetrue购买额外队列位。
emakistation.dismantletrue使用分解界面。
emakistation.reloadop重载配置。
emakistation.debugop调试开关。
emakistation.adminop管理员操作。

emakistation.purchase 刻意不放在 emakistation.queue.* 下面:那个前缀已经被队列长度分级占用,混在一起会让两种含义难以分辨。购买还需要 config.ymlqueue.purchase.enabled 与工作站的 queue.allow_purchase 同时为 true。

按工作站的访问权限

工作站与分解站各自有独立的访问权限前缀。配置里 permission 留空时回落到按 id 生成的节点:

类型配置键留空时的回落节点
合成工作站stations/<id>.ymlpermissionemakistation.access.<id>
分解站stations_dismantle/<id>.ymlpermissionemakistation.dismantle.access.<id>

这两个前缀不在描述符里声明,因为节点名取决于管理员配了哪些工作站。给玩家开放示例工作站与示例分解站:

text
emakistation.access.blacksmith
emakistation.dismantle.access.example_dismantle

队列长度权限档

启用 queue.permission_tiers 后,emakistation.queue.<n> 中数字最大的一档生效,<n> 就是队列长度。没有任何该前缀权限时保持 base_length 不变。

text
emakistation.queue.8
emakistation.queue.16

同时持有上面两个节点时生效的是 16。权限档取代基础长度,而付费队列位是叠加在生效档之上,最终统一被工作站的 queue.max_length 截断。

线程说明

任何触及玩家窗口或背包的子命令都会先切到该玩家的 owner 线程执行,因为命令可能来自控制台或另一个玩家的线程。在 Folia 上是实体调度器 owner,在 Paper 上是主服务器线程。