Rebooter
An elegant drop-in replacement for FermiumBooter, featuring broad API compatibility, cached annotation scanning, and complete freedom, backed by MixinBooter.
Usage
For users, remove FermiumBooter, then install Rebooter with
MixinBooter 10.x or higher. FermiumBooter-dependent mods should then
function normally. Make sure the leading backtick in the file name is present; otherwise, a ClassNotFoundException may
be thrown. When using Cleanroom Loader, MixinBooter is not needed.
For developers, we recommend making your mod depend directly on MixinBooter and ConfigAnyTime to load and control mixins. This approach provides more advanced mixin management and better compatibility. Add Rebooter as a dependency only when one of your dependencies requires FermiumBooter.
Compatibility
The current compatibility target is FermiumBooter 1.4.1.
Rebooter aims to provide API and ABI compatibility through 1.4.1, including APIs introduced in 1.2.0 and removed in 1.3.0.
The table lists the supported APIs introduced by each FermiumBooter release; releases with no API additions are omitted.
| Version | APIs introduced |
|---|---|
| 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) (removed in 1.3.0)FermiumEarlyModIDSearcher.isModPresent(String) (removed in 1.3.0)FermiumMixinConfigHandler.registerForgeConfigClass(Class<?>, Object) (removed in 1.3.0)MixinConfig.SubInstance (removed in 1.3.0)MixinConfig.EarlyMixin.name() (removed in 1.3.0)MixinConfig.LateMixin.name() (removed in 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 also supports a configurable network version. To connect to existing FermiumBooter servers, configure
Enable Custom Network Version and Custom Network Version in Rebooter's fermiumbooter.cfg. Although FermiumBooter
contains no network components, Forge applies its default @Mod version check during connection.
FermiumBooter.java#L9
Annotation scanning
FermiumBooter introduced @MixinConfig in 1.2.0, providing a way for developers to manage Mixin configuration
resources. However, in 1.3.0, the registry was replaced by a full ASM class scan on every launch. In an RLCraft Dregora
instance with 230 mods, this increased launch time by about 2.0 seconds.
Rebooter efficiently and accurately supports both approaches using optimized ASM scanning and a cache. The cache is rebuilt automatically when mod changes are detected, preserving its validity.
Liberty
Rebooter is implemented from scratch and uses FermiumBooter only as a reference for API compatibility, providing an independent libre alternative for everyone.
The mod code under src/ is released under The Unlicense, permitting unrestricted reuse. The project template is
RuiXuqi/ForgeDevEnv, adapted from
CleanroomMC/ForgeDevEnv, and is licensed under MIT License.

