Skip to content

命令与权限 ​

/emakistation 的全部子命令, 权限节点, 按工作站的访问权限, 以及队列长度的权限档, 方便随手查

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

主命令是 /emakistation, 别名 /estation, /est. 你什么都不带地敲一条, 或者敲了无法识别的子命令, 都会打印帮助

子命令 ​

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

下面这些子命令里, open, dismantle, queue, claim, cancel 要求你以玩家身份执行 (在控制台敲会提示仅限玩家). list, reload, debug, admin 则允许在控制台执行. 子命令表共 10 个可补全项 (help, open, dismantle, queue, claim, cancel, list, reload, debug, admin), 其中 help 只用于打印帮助

敲 open, cancel, list 时, 第二个参数会自动补全成已加载的合成工作站 id; dismantle 补全成已加载的分解站 id. 第一个参数的补全表里还包含 help. debug 的补全来自 CoreLib 的 debug 子命令

权限节点 ​

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

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

你可能会好奇 emakistation.purchase 为什么没有放进 emakistation.queue.* 下面: 那个前缀已经被队列长度分级占用, 混在一起会让两种含义难以分辨. 另外, 购买还需要 config.yml 的 queue.purchase.enabled 与工作站的 queue.allow_purchase 同时为 true

按工作站的访问权限 ​

工作站与分解站各自有一套独立的访问权限前缀. 你把配置里的 permission 留空时, 插件会自动改用按 id 生成的节点:

类型配置键留空时使用的节点
合成工作站stations/<id>.yml 的 permissionemakistation.access.<id>
分解站stations_dismantle/<id>.yml 的 permissionemakistation.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 上是实体调度器里的该玩家线程, 在 Paper 上是主服务器线程