简体中文
锻造历史记录
锻造历史记录存在哪里, 存了哪些内容, 怎么控制它什么时候写盘, 以及出问题时怎么排查
Forge 会给每个玩家单独保存锻造记录, 用来统计配方用了多少次, 驱动品质保底计数, 以及给锻造相关的占位符提供数据
配置位置
历史记录的配置在 config.yml 的 history 节点里. 发货默认值:
yaml
history:
enabled: true
auto_save: true
# 自动保存间隔, 6000 tick = 5 分钟
save_interval: 6000| 字段 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|---|
history.enabled | boolean | 否 | true | true / false | 它和 auto_save 一起决定要不要调度定时保存任务.它不会改变锻造次数和保底计数的累计: 计数一直都在记录, 关掉的只是定时写盘 |
history.auto_save | boolean | 否 | true | true / false | 是否按固定间隔保存玩家数据 |
history.save_interval | integer | 否 | 6000 | tick 数, >= 0 (无法解析时用 6000) | 定时保存的间隔和第一次保存的延迟, 单位是 tick (20 tick = 1 秒 (一个游戏刻)). 6000 tick 大约是 5 分钟 |
NOTE
enabled 与 auto_save 里只要有一个是 false, 定时自动保存任务就不会被调度. 关掉自动保存不等于不写文件: 玩家退出, 重载和关服时仍然会写盘
yaml
history:
enabled: true
auto_save: true
# 10 分钟
save_interval: 12000存储位置
玩家数据保存在 plugins/EmakiForge/data/<玩家UUID>.yml, 每名玩家一个文件. 写入走异步路径 (不占用主线程); 文件里另有一块 _meta 版本信息, 用来在多个会话同时写时判断哪份快照更新
文件结构
| 字段 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|---|
uuid | string | 是 | — | 玩家 UUID | 这份数据属于哪个玩家 |
recipes | map | 否 | 空 | key 为配方 ID | 按配方分组的历史记录. 只包含锻造过的配方 |
recipes.<recipe_id>.craft_count | integer | 否 | 0 | >= 0 | 这个配方成功锻造了多少次 |
recipes.<recipe_id>.first_crafted_at | string | 否 | 空 | ISO-8601 时间戳 | 首次锻造的时间 |
recipes.<recipe_id>.last_crafted_at | string | 否 | 空 | ISO-8601 时间戳 | 最近一次锻造的时间, 给 %emakiforge_last_crafted% 提供数据 |
guarantee | map | 否 | 空 | key 为配方 ID, 值为整数 | 品质保底的连续未达标计数. 只包含被改动过的配方 |
_meta.epoch | integer | 是 | 0 | >= 0 | 会话纪元, 用来在多处同时写时判断哪份更新 |
_meta.revision | integer | 是 | 0 | >= 0 | 同一纪元内的修订号 |
_meta.tombstone | boolean | 是 | false | true / false | 为 true 时这个文件是一个删除标记, 加载时当成空数据处理 |
yaml
uuid: "3f1c1f2a-0000-0000-0000-000000000000"
recipes:
flame_sword:
craft_count: 3
first_crafted_at: "2026-01-01T10:00:00Z"
last_crafted_at: "2026-01-02T12:30:00Z"
guarantee:
flame_sword: 2
_meta:
epoch: 12
revision: 0
tombstone: false与品质保底的关系
保底计数器就存在玩家数据文件的 guarantee 节点里, 两者直接相关:
- 每次锻造结果低于保底最低品质时, 保底计数 +1
- 计数达到阈值后触发保底, 并重置计数
- 保底触发条件和阈值见品质系统
使用建议
- 正式服建议你开启
enabled和auto_save - 并发高的服务器可以把
save_interval调大一些, 少写几次盘 - 赛季服或活动服可以在活动结束后把
data/目录归档, 用来统计配方产出
排查建议
- 数据没保存: 你先检查
enabled,auto_save和data/目录的权限 - 玩家数据加载失败时, 这个玩家的会话会保持只读, 以保护已有文件, 控制台会输出对应的警告
- 保底表现不对: 你先用
%emakiforge_guarantee_<recipe_id>%确认当前计数, 再核对配方和全局的保底配置 - 重载后数据不对: 你确认自动保存间隔, 必要时在维护前先停服, 等数据写盘完成