BetterAutoSave v0.16.3 — Forge 1.20.1 / NeoForge 1.21.1 异步存档优化
v0.16.3 — 修复 Modrinth 上 NeoForge 用户下到 Forge jar + 自 0.16.2 起的修复合集
0.16.3 主要修复一个分发问题:Modrinth 上 NeoForge 1.21.1 用户按默认下载拿到的是 Forge 1.20.1 的 jar,装上后 FML 报「需要 forge / 1.20.1」,在用户侧表现为「不兼容 neoforge」。mod 本身从未有此问题——0.16.2 的 NeoForge jar 经真机在 NeoForge 21.1.233 与 21.1.235 上均正常加载与运行。本版同时打包自 0.16.2 以来累积的一批数据安全与配置修复
分发修复(本版主因)
此前每次发版把 Forge 与 NeoForge 两端 jar 塞进同一个 Modrinth 版本,并给该版本打上两端加载器(forge、neoforge)与两个 MC 版本(1.20.1、1.21.1)的并集标签。Modrinth 的标签作用于整个版本,默认下载的是版本里的首个文件(Forge 的自包含 -all.jar)——于是这一个版本会同时出现在「NeoForge 1.21.1」「Forge 1.20.1」乃至并不存在的「Forge 1.21.1」「NeoForge 1.20.1」等所有组合下,NeoForge 用户过滤后点默认下载拿到的恒是 Forge jar
本版把发布管线改为按加载器各发一个独立 Modrinth 版本(+forge / +neoforge),每版只挂对应那一个 jar、即自身默认下载,各自只出现在正确的加载器与 MC 版本下。GitHub Release 侧一直是两个 jar 分别具名,不受影响
数据安全与正确性
- 多维度同名 SavedData 的在途去重键改用文件路径,修复不同维度同名数据被误判为同一份的隐患
- 在线单 chunk 回退的 install 环节补齐真正的事务回滚;回退尾段的异步光照/重发链补
exceptionallyAsync,异常不再被静默吞掉 - 修复存盘降级翻转的残窗内、已过闸门的 task 被静默丢失
- 异步加载(opt-in,仅 Forge)的 replay 失败与 worker 解析失败分开承接,并订正误导日志
- 异步加载 mixin 改为按
load.enabled门控应用,功能关闭时对字节码零介入 - SavedData 大文件守卫判据改按未压缩内存足迹,更贴合真实尖峰
配置变更
- 移除无效的
entityChunksPerTickBase旋钮(此前不起作用) deadlineGuardSeconds下界抬到 5,杜绝设为 0 时关掉存盘截止兜底
性能与兼容
- NeoForge 端 SavedData 移植 serialize-once,消除主线程上
tag.copy深拷贝的存盘尖峰 - 启动时探测到 fastasyncworldsave 等同样接管
ChunkMap.save的异步存盘 mod 会打 WARN,提示二者二选一
升级
- 替换 jar 即可
- NeoForge 1.21.1 用户:Modrinth 现按加载器正确分发,直接下 NeoForge 版即可(旧的错标合并版本已下架)
- config 里若手动设过已移除的
entityChunksPerTickBase,或把deadlineGuardSeconds设在 5 以下:启动时会被自动订正