Loom 0.11
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.
- Fixes issues with
- 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.