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, Fugue
  • You need to log in your GitHub account to download action artifacts.

Cleanroom on Server

  • Cleanroom can be installed on server.
  • Just use the installer mentioned in previous section, and run the jar with --intallServer. See this page for more detail.

Pack-making with Cleanroom

Steps of Making Your Pack Cleanroom Ready

  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

Steps of Migrating Your Pack Fully to Cleanroom

  1. Make your pack Cleanroom ready.
  2. Install relauncher to your pack. There are 3 variants available: official, unofficial, improved
  3. Configure the relauncher. All variants have their pros and cons, choose what you need.

About Cross-compat Between Forge and Cleanroom

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

List of Obsoleted/Incompatible Mods

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