Skip to content

配置详解

plugins/EmakiStation/config.yml 是主配置。version 是配置结构标记,插件按它合并新增的默认键;它与模块发布版本不同轨,不需要手工改成插件版本。

顶层键

默认值说明
version"1.0.8"配置结构版本标记,随默认资源同步维护。源码内部迁移常量另为 1.0.2,不要混用。
language"zh_CN"语言文件名,对应 lang/<language>.yml
release_default_datatrue首次启动时是否释放示例数据(stations/gui/recipes/ 下的示例文件)。改为 false 后已存在文件不会被覆盖,也不会再补齐缺失示例。

queue 队列默认值

每个工作站可以在自己的 stations/<id>.yml 里覆盖同名键。

默认值说明
base_length3基础队列长度。只有 waiting / running 占用长度,pending_claim 不占用。
permission_tierstrue是否启用权限分级。启用后 emakistation.queue.<n> 中数字最大的一档生效。
max_length32权限分级后的硬上限,任何权限都不能突破。
progress_mode"offline"队首推进方式:offline 按真实时间推进,online 仅在玩家在线时累计。
cancel_refund_rate1.0取消队列条目时退还材料的比例(0.0 ~ 1.0)。
tick_interval20队列推进任务的间隔(tick)。全服只有这一个定时器。
speed_multiplier1.0全局配方耗时倍率。小于等于 0 时按 1.0 处理。
purchase.enabledtrue付费队列位全服总开关。
purchase.cost_file"queue_costs.yml"价格档位文件名,相对插件数据目录。

pending_claim 不占用队列长度是有意设计:否则背包和仓库同时满的玩家会被自己未领取的产物锁死队列。

cancel_refund_rate 不按进度折算。串行单线队列里只有队首有进度,为一个几乎不存在的情况引入逐条目进度记账不值得,这是有意的简化。

progress_mode: offline 只表示「计时继续」,不表示「离线发货」。EmakiStorage 拒绝对离线玩家做任何写操作,所以离线期间到点的条目只是「已到期」,真正结算发生在玩家下次上线时。

价格文件缺失、为空或没有任何可用价格时,购买一律被拒绝而不是免费放行。

limits 容量上限

默认值说明
max_pending_claim100单个玩家最多累积多少条未领取产物。达到上限后拒绝新提交。
warn_material_types50单个配方材料种类数超过这个值时只记录警告,不阻止加载。
batch_multiplier_max0单次提交的最大倍率,0 表示不额外限制,仍受材料数量限制。

配方材料种类数不受 GUI 槽位数限制,warn_material_types 只是防手滑。

storage 仓库通道

默认值说明
enabledtrue总开关。关闭后 EmakiStation 完全不调用 EmakiStorage。
batch_max_ops200单批最多多少个操作,与 EmakiStorage 的 behavior.batch_max_ops 对应。

即使 enabled 为 true,仓库通道仍需要 EmakiStorage 提供 emakistorage:atomic_batch 能力才会启用。缺少该能力时不会退化为逐个 withdraw:那样会让材料在玩家背包里闪现一次,反而制造可利用的时间窗口。

材料同时来自背包和仓库时,插件优先使用 emakistorage:reservation 能力:先在仓库挂预留(不真正取出),再扣背包,最后提交预留。中途失败只需释放预留,而释放不会因为仓库容量不足而失败。EmakiStorage 版本较低、没有这个能力时,会退化为「先扣仓库、失败再存回」,存回本身可能因容量不足被拒,因此不如预留路径。

persistence 持久化

默认值说明
autosave_interval_seconds60自动保存间隔(秒)。
save_on_submittrue提交成功后是否立刻落盘,而不是等到下一次自动保存。

队列文件里的条目对应「已经扣掉的材料」,所以这个间隔比仓库的自动保存更短。

队列文件和仓库文件是两份独立文件,硬崩溃仍可能让两者不一致(材料已扣但条目未存,或条目已存但扣料未落盘)。每个条目都完整记录了消耗清单,便于人工对账。彻底消除这个窗口需要跨插件两阶段提交,代价过高。

gui 界面

默认值说明
click_throttle_ms200同一会话内两次点击的最小间隔(毫秒)。
refresh_interval_ticks20打开的界面多久重绘一次进度显示(tick)。