
线性阅读器
让Minecraft世界占用更少的空间。
查看大图LinearReader
LinearReader 是一款服务端 Minecraft 模组,能在不影响游戏体验的前提下减小你的世界体积。这主要通过使用 Xymb 的 Linear Region File Format 替代 Minecraft 的 Anvil 文件格式, 并使用 Zstd 压缩替代原版 Minecraft 所用的 Zlib 压缩算法来实现。
世界体积是如何减小的?
Xymb 的 Linear Region File Format 相比原版 Minecraft 的区域文件格式已有很大提升,能大幅减小世界体积。
另一项必要的改进是压缩算法和压缩等级。更高的压缩等级需要更多资源和时间,这对活跃的服务器来说并不理想,而更低的等级显然无法节省那么多存储空间。那么问题来了,LinearReader 如何才能兼具低等级压缩的速度和高等级压缩的存储节省?
LinearReader 通过将工作负载拆分为两个独立阶段来解决这个问题。实时写入使用低等级 Zstd 压缩快速完成,为 CPU 留出充足资源运行 Minecraft。随后,当服务器空闲时,LinearReader 会安全地以更深度的压缩重新压缩区域文件。
压缩基准测试
为了展示 LinearReader 的存储收益,以及为何实时写入时不使用高等级压缩,我针对 Anvil 文件格式使用 Zlib(Java 默认压缩等级,也就是原版 Minecraft 所用的等级)、Zstd 等级 4(LinearReader 通常用于实时写入的等级)和 Zstd 等级 22(LinearReader 用于重新压缩的等级)进行了基准测试。如需更深入地了解基准测试,请参阅 benchmarks/ 目录。
| 数据集 | 格式 | 大小 | 压缩比 | 压缩速度 | 解压速度 |
|---|---|---|---|---|---|
| 主世界 | Anvil/Zlib 6 | 8.38 GB | 5.44x | 75.7 MB/s | 1271.3 MB/s |
| 主世界 | LinearReader (Zstd 4) | 6.21 GB | 7.39x | 585.5 MB/s | 1412.8 MB/s |
| 主世界 | LinearReader (Zstd 22) | 4.28 GB | 10.71x | 4.4 MB/s | 1589.2 MB/s |
| 末地(大部分为虚空) | Anvil/Zlib 6 | 2.16 GB | 3.66x | 188.4 MB/s | 1576.4 MB/s |
| 末地(大部分为虚空) | LinearReader (Zstd 4) | 244 MB | 33.20x | 1811.1 MB/s | 4062.7 MB/s |
| 末地(大部分为虚空) | LinearReader (Zstd 22) | 141 MB | 57.50x | 10.1 MB/s | 6166.9 MB/s |
| Tectonic + Terralith | Anvil/Zlib 6 | 2.56 GB | 5.97x | 84.1 MB/s | 1338.1 MB/s |
| Tectonic + Terralith | LinearReader (Zstd 4) | 1.80 GB | 8.49x | 735.8 MB/s | 1742.8 MB/s |
| Tectonic + Terralith | LinearReader (Zstd 22) | 1.24 GB | 12.37x | 4.4 MB/s | 1787.3 MB/s |
如上表所示,LinearReader + Zstd 在正常游戏过程中实现了更好的压缩率,同时仍保持较快的压缩和解压速度(Zstd 22 用于重新压缩器,在正常游戏过程中不会启用)。
其他特性
LinearReader 不仅仅替换了 Minecraft 的文件格式和压缩算法,还包含一系列其他特性,例如:
- 备份系统:LinearReader 可自动创建区域文件备份,以备不时之需。
- 缓存系统:可配置数量的最近使用的区域文件会保留在内存缓存中,减少磁盘读取和解压。
- 区块清理系统:LinearReader 可搜索可安全删除的空的无价值区块。严格的规则确保只清理真正无价值的区块。
- 自适应运行时策略:LinearReader 可调整某些设置以保持游戏流畅运行。
为服务器而设计
作为一款服务端模组,LinearReader 尽可能为服务器管理员提供帮助和有用信息。它提供了诸如 benchmark 和 health 等命令,用于查看基准测试和内部指标,还有配置文件,可让设置贴合服务器的需求。
(LinearReader 在单人游戏中也同样可用,单人游戏玩家可以访问服务器管理员所能访问的所有相同特性。)
模组服务器
LinearReader 力求尽可能兼容更多模组。大多数模组都可直接使用,但任何更改 Minecraft 部分存储系统或需要在磁盘上读取文件的模组很可能无法正常工作。从 RAM 读取区块数据的模组通常可以正常工作。
兼容/不兼容模组列表可在 wiki 中找到。
如果你发现模组不兼容,请创建一个 issue。
安装与卸载
安装时,只需从 CurseForge
或 Modrinth 下载 LinearReader,将 .jar 文件放入 mods 文件夹即可,
无需其他操作。LinearReader 会处理后续的一切。
卸载时,运行命令 /linearreader export-mca start 将你世界中的 .linear 文件转换回 .mca,用新生成的 .mca 文件替换你的 .linear 区域文件,然后移除 LinearReader。
数据安全
建议在安装 LinearReader 之前备份你的世界,因为 LinearReader 会大幅更改 Minecraft 的内部存储引擎,任何存储相关的 bug 都可能损坏你的世界。因此,请务必备份你的世界。
了解更多
本 README 并未提供 LinearReader 所有特性的完整、深入说明。我强烈建议阅读 wiki 以全面了解 LinearReader 所提供的一切。
开发状态
我打算将 1.3.0 版本作为 LinearReader 的最后一个版本。
我不再计划为 LinearReader 添加新功能。不过,我计划在不久的将来保持 LinearReader 与最新 Minecraft 版本同步更新。
我仍会尽量回复 GitHub issue,必要时可能会发布热修复,但我的意图是在发布 1.3.0 版本后,(由我进行的)LinearReader 的严肃开发将停止。
AI 免责声明
本模组的代码编写使用了 AI。每个新版本发布前都会经过人工测试。如果你遇到任何问题,请在 GitHub 上报告,我会尽快尝试解决。
有关本模组中 AI 使用的更多信息,请参阅 AI_USAGE.md。
正在加载版本记录…



正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。