Skip to content

CleanroomMC/Cleanroom

Repository files navigation

Cleanroom Minecraft

Features

Implemented

  • 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

Planning

  • CleanroomGradle to replace ForgeGradle
  • Classfile API
  • Actually useful APIs (See here)
  • Optimized

Components:

  • 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.
  • Forgelin-Continuous and LibrarianLib-Continuous

Download & Installation:

  • 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), install the relauncher, launch the game and follow instructions.
  • WARNING: Only MultiMC-based launchers are officially supported. This is because of the limit on removing vanilla libraries in other launchers.
  • Remember to install Fugue!
  • And Scalar!
  • If you were told to use action builds (aka bleeding edge), here: Cleanroom jar, Cleanroom MMC zip, Fugue
  • You need to log in your GitHub account to download action artifacts.

Pack-making with Cleanroom

Steps of Migrating to Cleanroom

  1. Add Scalar and Fugue in your pack.
  2. Add Relauncher (optional, this will make your pack a full Cleanroom pack)
  3. Test launching and remove incompatible mods

About Cross-compat Between Forge and Cleanroom

  • Cleanroom mods (Fugue, Scalar) will be ignored by Forge, so then won't crash existed players
  • Cleanroom integrated mods (MixinBooter, ConfigAnyTime) will be ignored by Cleanroom, then won't crash new players
  • The version of built-in MixinBooter is configurable in forge_early.cfg

List of Obsoleted/Incompatible Mods

  • Phosphor: Use Hesperus or Alfheim Lighting Engine
  • Forgelin: Use Forgelin-Continuous
  • LibrarianLib: Use LibrarianLib-Continuous
  • JustEnoughIds: Use RoughlyEnoughIDs
  • AdvancedShader: Binary patching, incompatible
  • Polyfrost series: Waiting for official fix
  • Essential.gg: Patched but still buggy

Build Instructions:

  1. Clone this repository
  2. Import the build.gradle into your IDE (most preferably IntelliJ IDEA)
  3. Once the import has finished, run gradlew setup
  4. Run gradlew --stop to stop the daemon and prevent ForgeGradle gone wrong
  5. Build with gradlew build

Development Tips:

  • 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.

Mod Development:

Official template is here: template

A porting guide is available in Cleanroom wiki (WIP).