Skip to content

BetterAutoSave v0.16.3 — Forge 1.20.1 / NeoForge 1.21.1 异步存档优化

Choose a tag to compare

@github-actions github-actions released this 08 Jul 05:10
· 25 commits to main since this release
150f4d3

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 以下:启动时会被自动订正