Skip to content

Loom 0.11

Compare
Choose a tag to compare
@modmuss50 modmuss50 released this 24 Jan 19:51
· 13 commits to dev/0.11 since this release

Loom 0.11

  • Interface Injection
    • Provides a simple way for mods to add an interface to Minecraft classes.
    • Mixin should be used to implement the interface on the class at runtime.
    • Comments are added to the decompiled source noting the mod id for the injected interface.
  • Add server only option for mods that only target the server.
    • Compile-time safety to prevent accidental usage of client only classes.
    • Improved performance as there is less to download, process and decompile.
  • Full support for computers using the ARM processor architecture.
    • Supports MacOS (Apple silicon), Windows and Linux
    • Updates LWJGL to 3.3.0 and uses the official ARM natives.
    • Automatically includes a small mod to fix a MacOS only issue for older Minecraft versions.
  • Kotlin class metadata remapping.
    • Fixes issues with kotlinx.serialization and issues when depending on kotlin libraries.
  • Exclude client only Minecraft libraries from server run configurations in Inteliij or Gradle.
  • Add an option to remove log4j from the compile classpath.
    • Mods should move over to using SLF4j
  • Highly experimental support for splitting the minecraft jar into common and client only jar files.
    • Currently unsupported by fabric-loader, future loom versions will build upon this.
  • Improvements to the decompiler API.
    • Additional functionality exposed for 3rd party decompilers.
    • Register default decompilers earlier so they can be configured without using afterEvaluate.
    • Better support for multiple decompile tasks.
  • Update to Java 17 and Gradle 7.3
  • Continued work on performance improvements
    • Project configuration time has been reduced by moving some launch requirements such as extracting natives and writing dli/log4j configuration files to pre launch tasks.
    • Remap jar and sources tasks have been rewritten to run asynchronously when Parallel execution is enabled.
    • More resources are now shared between multi-project setups, reducing memory consumption. Even when the shared caches option is not possible.
  • A number of other misc bug fixes and smaller improvements.

Interface Injection

Interface injection is a compile time only feature, this means that a Mixin should also be used to implement the interface onto the target class. The following snippet can be added to your fabric.mod.json file to add an interface to the net/minecraft/block/Block class.

{
  "custom": {
    "loom:injected_interfaces": {
      "net/minecraft/class_2248": ["net/fabricmc/example/ExampleInterface"]
    }
  }
}

New Options

loom {
    // Disables client related features and resources.
    serverOnlyMinecraftJar()
    // Enable runtime only log4j, forces mods to use SLF4J for logging.
    runtimeOnlyLog4j = true
}

Loom 0.11 contains major rewrites to a number of core functions to make a lot of these new features possible, if you find any issues please make sure to report them.