A compatibility tool to run (some) Fabric mods on Forge.
NOT READY TO BE USED. Don't try.
Currently targeting Minecraft 1.20.1.
Currently targeting Forge rather than NeoForge; migration is planned.
Development contributions are appreciated (refer to Issues, and the project board)
git clone --recursive
(if you forgot to use--recursive
, rungit submodule update --init --recursive
after)./gradlew applyPatches
(this will generate the patched version offabric-loader
that Steelwool uses)./gradlew build
Built jar location: ./ModLocator/build/libs/
Note that MixinTransmogrifier is a required dependency.
You'll also probably want Gambeson, our patched version of fabric-api
.
The main subproject, containing our implementation of IModLocator
that finds Fabric mod jars in the mods folder and converts them to jars that can be loaded by Forge.
This subproject contains a Forge mod that is nested inside the main Steelwool jar, that handles some runtime behavior normally handled by FabricLoader (currently only entrypoints).
(It is also used to make Steelwool appear in the mods list, as IModLocator
s do not get displayed.)
Contains a patched version of fabric-loader
, used for both mod resolution and various loader APIs that Fabric mods may access.
fabric-loader
- the upstream commit as a git submoduleloader-patches
- patches applied to upstream, generated bygitpatcher
steelwool-loader
- the patched version offabric-loader
steelwool-hooks
- hooks that can be used in the patched loader, to reduce diff size. Currently unused, but eventually implementations will go inModLocator
.
Forge allows for loading mod locators as dependencies in development environments, but does not support loading them directly in their own project.
Because of this, we use a dummy mod to load Steelwool in development environments. (TODO does this still work?)
If you make changes to steelwool-loader
, commit your changes, then run ./gradlew makePatches
to regenerate the patch files in loader-patches
.