基本信息
我的世界Java版本
平台
运行环境
其他链接
搬运团队
详情信息
LazyDFU 是适用于《我的世界》的一种优化模组,它会推迟不必要的初始化工作,以便仅在需要时才执行。具体来说,它使 DataFixerUpper 的初始化变得“懒惰” - 也就是说,在实际需要之前,它不会立即创建将《我的世界》旧版本的数据迁移到新版本所需的规则。
此模组适用于 Fabric/Quilt
兼容性
- LazyDFU 0.1.2 与《我的世界》1.14 至 1.18.2 兼容,并且可在客户端和服务器端运行。
- LazyDFU 0.1.3 与《我的世界》1.19 及以上版本兼容,但 Mojang 现在在服务器端实现了 LazyDFU 提供的功能。默认情况下,客户端仍然会初始化所有的 DFU 规则,因此 LazyDFU 会挂钩到本地客户端功能,该功能启用 DFU 规则烘焙并将其变为无操作。
然而,从《我的世界》1.19.4 及以上版本开始,Mojang 已经对 DFU 初始化进行了显著优化,在许多配置中,此模组不再是必需的。但对于较旧版本的《我的世界》,它仍将继续得到支持。
赞助我!
这个模组是否让您能够愉快地玩《我的世界》?请赞助我,以便我能够继续开发它。
它为什么有效?
DataFixerUpper(通常缩写为 DFU)是《我的世界》中负责处理从旧版本到新版本的世界升级的组件。DFU 在《我的世界》启动过程的早期就会被初始化 - 实际上,它在游戏窗口甚至还未出现时就已被初始化。它的设计过于复杂且速度非常慢,但这是 Mojang 提供给我们使用的。
作为 DFU 初始化过程的一部分,它会缓存从旧版本到《我的世界》中间的每个版本(直到正在启动的游戏版本)所需的转换规则。这个过程在后台进行,但它非常缓慢,因为它既占用 CPU 又占用内存。对于《我的世界》1.16.5,我测量到在 Ryzen 9 3900X 台式机(2019 年发布的高端台式机 CPU)上这个过程需要 9 秒,而在配备 i5 - 8250U(2017 年的中端笔记本芯片)的笔记本电脑上则需要 57 秒。
LazyDFU 所做的只是停止这个过程 - 它允许 DFU 进行初始化,但会强制其不缓存所有这些规则。因此,只有当世界需要转换时,DFU 规则才会被编译。这意味着如果 LazyDFU 迫使游戏编译迁移规则,您可能会看到延迟峰值,但一旦完成,就不会有性能损失。
如何证明
我录制了一个视频,向您展示 LazyDFU 的有效性。
与其他模组的比较
与其他模组相比,LazyDFU 的主要优势在于简单、安全且对游戏的影响小_。
- LazyDFU 是一个非常简单的模组。整个模组大约只有十几行代码,是一个尽可能简单的模组,但仍然带来了巨大的好处。(这也意味着它是一个理想的模组,可用于在新的 Mixin 平台上进行实验!)
- LazyDFU 具有高度的兼容性和安全性。LazyDFU 极不可能与其他模组发生冲突。此模组基于Paper中的一个类似补丁,该补丁已使用了一年多,在迁移到《我的世界》的新版本时没有报告过问题。(此后,Paper 已改为用自己的高度优化实现来替换 Mojang 的数据修复器。)