Skip to content

Releases: FabricMC/fabric-loom

Loom 1.15

22 Jan 08:55
eb157e4

Choose a tag to compare

  • Removed FernFlower decompiler. (modmuss)
  • Improve support for remaping directly from official mappings to named mappings without requiring intermediary. (ishland)
  • Add loom.defaultMixinRemapType configuration option to set the default mixin remap type in unobfuscated versions. (ishland, modmuss50)
  • Add task to validate mod-provided javadoc. (Juuz)
  • Make useXvfb task property public and use OS path resolution for xvfb-run executable instead of hardcoded paths. (Silas, modmuss50)
  • Improved performance when merging Minecraft jars. (modmuss)
  • Apply ClassTweaker and injected interfaces asynchronously. (modmuss)
  • Minor performance optimisations throughout the codebase. (modmuss)
  • Fix remapJar failures in mixed obfuscated/unobfuscated multi-project builds when using useLegacyMixinAp. (modmuss50)
  • Fix ModEnigmaTask using intermediary when obfuscation is disabled. (Juuz)
  • Fix decompilation for setups using intermediary on Minecraft 26.1 (1.21.4). (ishland)
  • Fix IDE import errors when using Gradle's Isolated Projects feature with Loom in a subproject. (Deximus-Maximus)
  • Fix transitive access wideners and mod javadoc when using intermediary on unobfuscated Minecraft versions. (ishland)
  • Skip Java version check when not remapping. (modmuss50)
  • Only apply transitive access wideners and mod javadoc from compile & runtime mods. (modmuss)
  • Update Tiny Remapper to latest version. (modmuss)
  • Tag commits with version information, (modmuss)
  • Various other fixes and improvements.

Loom 1.14

04 Dec 11:19
a13f004

Choose a tag to compare

Fabric Loom 1.14

  • Initial support for the non-obfuscated versions of Minecraft (modmuss, zOnlyKroks)
  • New plugin IDs:
    • net.fabricmc.fabric-loom to be used for non-obfuscated versions
    • net.fabricmc.fabric-loom-remap to be used for obfuscated versions of Minecraft
    • fabric-loom remains to preserve backwards compatibility with existing projects
  • Loom now requires Gradle 9.2
  • Add loom.productionNamespace to better support remapping the non-obfuscated versions. (ishland)
  • Add utility method for defining an entrypoint with a language adapter in FabricModJsonV1Spec (Ellie-McQuinn)
  • Add loom property to disable to automatic remapping of JSR annotations to jetbrains (opekope2)
  • Disable jar verification by default as it was making things harder for legacy versions.

While this is only a small change log, a vast amount of work has gone into supporting the new non-obfuscated Minecraft versions. When you use the new plugin ID for non-obfuscated versions, loom will skip configuring everything related to remapping. This provides a significant performance boost and greatly simplifies what loom does removing a lot of edge-case issues related to remapping mods.

In the future we will provide documentation on how to upgrade your build-script and mod to these non-obfuscated versions. This will come after 1.21.11 which we expect to be the last obfuscated version. There is no need to rush or worry about these changes. Future versions of Loom will include further improvements and features to the non-obfuscated versions.

Loom 1.13

04 Nov 09:18

Choose a tag to compare

  • Major improvements to the migrate mappings task
    • Mixin support via MercuryMixin
    • Improved error handling/reporting
    • Register migrate mapping task for each sourceset, e.g migrateClientMappings
    • Delete output dir if it already exists
    • Add --overrideInputsIHaveABackup option that replaces the input files. If you don't have a backup there is no going back.
  • Add migrateClassTweakerMappings to migrate AccessWidener/ClassTweaker files (Juuz)
  • Make remapping tasks use the archive file from the Jar API (Juuz)
  • Update to mapping-io 0.8.0 (NebelNidas)

Please see the brand new docs page for help with migrating your mappings: https://docs.fabricmc.net/develop/migrating-mappings

Loom 1.12

29 Oct 09:03
e076ac7

Choose a tag to compare

  • Add ability to add and remove annotations via mappings (Earthcomputer)
  • Disable the legacy Mixin Annotation Processor by default
  • Add task to generate fabric.mod.json files
  • Add task for launching Enigma (Juuz)
  • Support cross-project classpath groups when using Gradle's configure on demand feature
  • Print a warning when the project is stored in OneDrive
  • Update unpick to support unpick V4
  • Correctly merge differing method/field access permission flags when merging Minecraft jars.
  • Remove Guava and Commons IO dependencies
  • Add system property to renderdoc tasks
  • Fix and test SpecContext always resolving mod dependencies with the runtime attribute.
  • Make fabric.mod.json path configurable at configuration stage. (kikugie)
  • Replace terminal console appender library with forked fabric-log4j-util.
  • Fix CFR decompiler failing on Minecraft c0.30
  • Fix invisible log levels being enabled in the log4j config (Juuz)
  • Note: The plan is for this to be the last version of Loom to support Gradle 8.x, if you have anything preventing you from updating to Gradle 9 please let me know.

Many other smaller bug fixes and improvements, see: dev/1.11...dev/1.12 for the full list of changes.

Loom 1.11

22 Jul 17:51
c7accc6

Choose a tag to compare

  • Supports Gradle 8.14 and 9.0.
  • Requires Java 21, mods can still be compiled for Java 8 and all Minecraft versions.
  • Add built-in support for RenderDoc using two new tasks startRenderDocUI & runClientRenderDoc (Windows & Linux only).
  • Verify the Minecraft jar signature after downloading.
  • Support run configs in folders with the new ideConfigFolder property.
  • Resolve libraries for all platforms when using Gradle's --write-verification-metadata option. See #1286 for details.
  • Add option to inline refmaps from dependencies before remapping.
    • This allows you to see the dependencies Mixin annotations in your own mappings.
  • Add option to skip mappings non root methods when using Mojang mappings. See #1258 for details.
  • Unpick V3 support
  • Unpick remapping
  • Add support for specifying custom mappings in remap sources/jar tasks, with the new customMappings property.
  • Fix being unable to depend on specific -SNAPSHOT versions of mod dependencies.
  • Many other smaller fixes / improvements

Loom 1.10

18 Feb 09:03
2cd695b

Choose a tag to compare

  • Add DSL to configure Fabric API game/client tests
  • Production run tasks
    • Uses XVFB to allow running the prod client on GitHub actions (no setup required)
    • Tracy capture support, generates a tracy profile for the run (bring your own tracy-capture)
    • Defaults to running with all mods on the productionRuntimeMods configuration.
  • Update to Gradle 8.12
  • Download mod source artifacts in parallel
  • Add general purpose download task
  • Update to latest mapping-io and tiny-remapper
  • Linenumber remapper improvements
  • Configure compile task mixin options lazily
  • Improved decompiler class entry validation
  • Fix getCompileRuntimeModsFromRemapConfigs not returning mods that have different versions on the compile/runtime classpath.
  • Fix lazily provided layered mappings
  • Run library processor for server-only projects for Minecraft versions without bundle metadata
  • Create backup jars for legacy merged mapped minecraft providers
  • Fix VSC working directory location for sub projects.
  • Remove loom bootstrap

Loom 1.9

01 Dec 14:46

Choose a tag to compare

  • Update minimum supported Gradle version to 8.11
  • Support Kotlin 2.1+ by using the kotlin-metadata library included with Kotlin 2
    • Minimum supported Kotlin version is now 2.0
  • Initial support for project isolation and configure on demand
    • Injected interfaces and transitive access wideners from other sub projects currently wont be applied.
    • Mixin AP mappings from other sub projects wont be used when remapping.
    • Expect further work on to be done on this in the future
  • Add some Gradle properties to control the decompile cache
  • Add option to configure datagen using the client
  • Allow datagen tasks to be skipped when up to date (depends on a FAPI change) and run in parallel.
  • A handful of smaller bug fixes

Loom 1.8

11 Oct 16:25
ca9ed47

Choose a tag to compare

  • Configuration cache support (modmuss50)
    • Remove the advanced multi project optimisation option, it only provided a small benefit to specific projects and is fundamentally incompatible with config cache.
    • Gen sources task no longer rebuilds the input jar, now uses a pre cached input jar
  • RISC-V Linux support (modmuss50)
  • Update to Gradle 8.10 (modmuss50)
  • Add hash suffix to custom intermediaries (Wyvest)
  • Fix inner class detection in JarWalker, for older Minecraft versions (SpaceWalkerRS)
  • Use Minecraft manifest name in file name instead of url hash (SpaceWalkerRS)
  • Fix conflicts caused by MappingsMerger when used with pre-1.3 Minecraft (SpaceWalkerRS)
  • Fix a an edge case issue with generic injected interfaces (FirstMegaGame4)
  • Setup the test sourceset better when using split sources. (modmuss50)
  • Include dev jars from other projects in classpath groups (Juuxel)
  • Many other smaller fixes and changes

Configuration cache is an opt-in Gradle feature that will be enabled by default in Gradle 9, this version of Loom contains full support for it. This is something I have been working towards supporting for sometime. For now I would only recommend Gradle veterans try it out, as it imposes a range of restrictions on how your build script is setup. Unfortunately in my limited testing the performance improvements are minimal for Fabric projects, so don't feel like you are missing out if you don't enable it just yet.

Loom 1.7

18 Jun 08:12
097fd98

Choose a tag to compare

  • Update to Gradle 8.8
  • Workaround a Java bug causing the closed zip file system errors
  • Add manifest entry allowing deps to define known bsms
  • Make Vineflower the default decompiler
  • Improve error message when failing to parse FMJ json files
  • Improve the code behind include
  • Improvements to the decompiler cache
  • Fix Mojang mappings with noIntermediateMappings
  • More work towards Gradle configuration caching support, full support to come later
  • Misc smaller fixes/improvements

Loom 1.6

01 Apr 14:39

Choose a tag to compare

  • Decompiler cache
  • Generics support for injected interfaces
  • Support merging pre 1.3 Minecraft versions
  • Refactor/improve kotlin metadata remapping
  • Print info about locked files during configuration or genSources
  • Improve locking strategy for concurrent loom executions
  • Update to Gradle 8.6
  • Async line number remapping
  • Prepare for SelfResolvingDependency's removal
  • Fallback to maven central for artifacts such as sources or javadocs that are not mirrored on Mojang's repo
  • Introduce SemVer version parsing for included mods/libraries
  • Download intermediary using Gradle
  • Add API to get named minecraft jars
  • Add RemapJarTask.getOptimizeFabricModJson (disabled by default)
  • Prevent Gradle from running vscode task asynchronously
  • Add classname to stracktrace when Kotlin remapping fails
  • Fix datagen run config having incorrect name
  • Don't fail setup if a project fabric.mod.json file is invalid
  • Fix idea sync task group
  • Only set startFirstThread on versions using LWJGL 3
  • Add interface injection unit test
  • Add Offline mode / locking test
  • Fix possible race condition in PrepareJarRemapTask when using MPO
  • Refactor MinecraftJarConfiguration and MinecraftMetadataProvider

Generated/detailed changelog

New Contributors

Full Changelog: 1.5...1.6