- 1.12.2 on Java 21
- Latest LWJGL3
- A working mod development template/kit
- Patches for loading incompatible mods
- Built-in Mixin w/ handy bootstrapping
- Develop using Scala 3 + Kotlin 2
- Compatibility to 99% of Forge mods
- CleanroomGradle to replace ForgeGradle
- Classfile API
- Actually useful APIs (See here)
- Optimized
- Minecraft Coder Pack
- CleanroomLoader (Continuation + Revamp of ForgeModLoader)
- Cleanroom Minecraft (Continuation + Revamp of MinecraftForge)
- Customized Mixin
- Bytecode Patcher (Coming Soon) [Inspired by Bansoukou and Bytecode Patcher]
- Fugue, a mod patches many incompatibilities.
- Javassist
- Scalar, a Scala provider. We made Scala libraries become a standalone mod so it can be updated.
- For MultiMC-based launchers (PolyMC, PrismLauncher), download the MMC instance from release, import it in your launcher(alternatively unzip patches and json inside to your 1.12 instance).
- For regular launcher (official launcher, AT launcher, FTB, HMCL), download the installer jar from release. You could use the installer like the Forge one.
- Remember to install Fugue!
- And Scalar!
- If you were told to use action builds, here: Cleanroom jar, Cleanroom MMC zip, Fugue
- You need to log-in into GitHub to download action artifacts.
- Clone this repository
- Import the
build.gradle
into your IDE (most preferably IntelliJ IDEA) - Once the import has finished, run
gradlew setup
- Build with
gradlew build
- Only modify
projects/cleanroom/src/
directory if you want to change vanilla - Run
gradlew genPatches
before commit, or the changes won't exist - Modifications on
src/
doesn't need generating patches - Tips from Forge are still apply, keep the patches clean!
- The current patches is full of useless hunks after we switched to VineFlower, we encourage contributors to clean up these patches manually.
There's an unofficial template exist. Note: You need to build before run.
A porting guide is available in Cleanroom wiki.
graph TD;
A(Mixin integration)-->D(Bouncepad overhaul - we are here);
B(LWJGL compat)-->D;
C(Newer Java compat)-->D;
D-->E(Config any time);
D-->G(Minor improvement and fixes)
E-->F(Greater improvement needs configs)
X(Cleanroom Gradle)-->D
D-->X
D-->Y(Better Mixin Integration)
Y-->D