命令与权限
EmakiStation 的命令在运行时注册,不在 paper-plugin.yml 里声明 commands: 段。这与系列内其他模块一致。
主命令 /emakistation,别名 /estation、/est。不带参数或子命令无法识别时打印帮助。
子命令
| 用法 | 权限 | 说明 |
|---|---|---|
/emakistation | 无 | 打印帮助。 |
/emakistation open <工作站> | emakistation.use + 该工作站访问权限 | 打开工作站界面。 |
/emakistation dismantle <工作站> | emakistation.dismantle + 该分解站访问权限 | 打开分解界面。 |
/emakistation queue | emakistation.use | 查看自己的队列。 |
/emakistation claim | emakistation.use | 领取待领取的产物。 |
/emakistation cancel <工作站> <序号> | emakistation.use | 取消队列条目。 |
/emakistation list [工作站] | emakistation.use | 列出工作站,或列出某工作站的配方。 |
/emakistation reload | emakistation.reload | 重载配置、工作站、配方与界面模板。 |
/emakistation debug | emakistation.debug | 调试开关,参数与其他模块的 debug 子命令一致。 |
/emakistation admin queue <玩家> | emakistation.admin | 查看指定玩家的队列,会异步加载离线玩家数据。玩家名必须在服务端缓存中,否则报未知玩家。 |
open、cancel、list 的第二个参数会补全为已加载的合成工作站 id;dismantle 补全为已加载的分解站 id。第一个参数的补全表还包含 help。
权限节点
paper-plugin.yml 声明的权限及默认值:
| 权限 | 默认 | 作用 |
|---|---|---|
emakistation.use | true | 使用工作站界面与队列相关子命令。 |
emakistation.purchase | true | 购买额外队列位。 |
emakistation.dismantle | true | 使用分解界面。 |
emakistation.reload | op | 重载配置。 |
emakistation.debug | op | 调试开关。 |
emakistation.admin | op | 管理员操作。 |
emakistation.purchase 刻意不放在 emakistation.queue.* 下面:那个前缀已经被队列长度分级占用,混在一起会让两种含义难以分辨。购买还需要 config.yml 的 queue.purchase.enabled 与工作站的 queue.allow_purchase 同时为 true。
按工作站的访问权限
工作站与分解站各自有独立的访问权限前缀。配置里 permission 留空时回落到按 id 生成的节点:
| 类型 | 配置键 | 留空时的回落节点 |
|---|---|---|
| 合成工作站 | stations/<id>.yml 的 permission | emakistation.access.<id> |
| 分解站 | stations_dismantle/<id>.yml 的 permission | emakistation.dismantle.access.<id> |
这两个前缀不在描述符里声明,因为节点名取决于管理员配了哪些工作站。给玩家开放示例工作站与示例分解站:
emakistation.access.blacksmith
emakistation.dismantle.access.example_dismantle队列长度权限档
启用 queue.permission_tiers 后,emakistation.queue.<n> 中数字最大的一档生效,<n> 就是队列长度。没有任何该前缀权限时保持 base_length 不变。
emakistation.queue.8
emakistation.queue.16同时持有上面两个节点时生效的是 16。权限档取代基础长度,而付费队列位是叠加在生效档之上,最终统一被工作站的 queue.max_length 截断。
线程说明
任何触及玩家窗口或背包的子命令都会先切到该玩家的 owner 线程执行,因为命令可能来自控制台或另一个玩家的线程。在 Folia 上是实体调度器 owner,在 Paper 上是主服务器线程。