重启者

重启者

一个优雅的FermiumBooter即插即用替代品,由MixinBooter支持。

Rebooter

一个优雅的 FermiumBooter 即插即用替代品,具有广泛的 API 兼容性、缓存的注解扫描和完全的自由度,由 MixinBooter 提供支持。

使用方法

对于用户,移除 FermiumBooter,然后安装 Rebooter 并搭配 MixinBooter 10.x 或更高版本。依赖 FermiumBooter 的模组应能正常运行。请确保文件名中的前导反引号存在;否则可能会抛出 ClassNotFoundException。使用 Cleanroom Loader 时,则无需 MixinBooter。

对于开发者,我们建议您的模组直接依赖 MixinBooter 和 ConfigAnyTime 来加载和控制 mixin。这种方法提供更高级的 mixin 管理和更好的兼容性。仅当您的某个依赖项需要 FermiumBooter 时,才将 Rebooter 添加为依赖。

兼容性

当前兼容目标为 FermiumBooter 1.4.1。

Rebooter 旨在提供截至 1.4.1 的 API 和 ABI 兼容性,包括在 1.2.0 中引入但在 1.3.0 中移除的 API。

下表列出了各 FermiumBooter 版本引入的受支持 API;没有新增 API 的版本已省略。

版本 引入的 API
1.0.0 FermiumRegistryAPI.enqueueMixin(boolean, String...)
FermiumRegistryAPI.enqueueMixin(boolean, String)
FermiumRegistryAPI.enqueueMixin(boolean, String, boolean)
FermiumRegistryAPI.enqueueMixin(boolean, String, Supplier<Boolean>)
FermiumRegistryAPI.removeMixin(String)
1.2.0 FermiumRegistryAPI.isModPresent(String)
FermiumRegistryAPI.registerAnnotatedMixinConfig(Class<?>, Object) (在 1.3.0 中移除)
FermiumEarlyModIDSearcher.isModPresent(String) (在 1.3.0 中移除)
FermiumMixinConfigHandler.registerForgeConfigClass(Class<?>, Object) (在 1.3.0 中移除)
MixinConfig.SubInstance (在 1.3.0 中移除)
MixinConfig.EarlyMixin.name() (在 1.3.0 中移除)
MixinConfig.LateMixin.name() (在 1.3.0 中移除)
MixinConfig.CompatHandling.modid()
MixinConfig.CompatHandling.desired()
MixinConfig.CompatHandling.disableMixin()
MixinConfig.CompatHandling.reason()
MixinConfig.CompatHandlingContainer.value()
1.3.0 FermiumJarScanner.isModPresent(String)
MixinConfig.name()
MixinConfig.MixinToggle.earlyMixin()
MixinConfig.MixinToggle.lateMixin()
MixinConfig.MixinToggle.defaultValue()
1.3.2 MixinConfig.CompatHandling.warnIngame()

Rebooter 还支持可配置的网络版本。要连接到现有的 FermiumBooter 服务器,请在 Rebooter 的 fermiumbooter.cfg 中配置 Enable Custom Network Version 和 Custom Network Version。尽管 FermiumBooter 不包含网络组件,但 Forge 在连接时会应用其默认的 @Mod 版本检查。FermiumBooter.java#L9

注解扫描

FermiumBooter 在 1.2.0 中引入了 @MixinConfig,为开发者提供了一种管理 Mixin 配置资源的方法。然而,在 1.3.0 中,注册表被替换为每次启动时进行的完整 ASM 类扫描。在一个包含 230 个模组的 RLCraft Dregora 实例中,这使启动时间增加了约 2.0 秒。

Rebooter 通过优化的 ASM 扫描和缓存,高效且准确地支持这两种方法。当检测到模组变化时,缓存会自动重建,保持其有效性。

自由

Rebooter 从零开始实现,仅将 FermiumBooter 作为 API 兼容性的参考,为所有人提供了一个独立的自由替代方案。

src/ 下的模组代码以 The Unlicense 发布,允许无限制地重复使用。项目模板为 RuiXuqi/ForgeDevEnv,改编自 CleanroomMC/ForgeDevEnv,并根据 MIT License 许可。