What does Quilt provide over other mod-loaders?
At the time of writing, Quilt is in beta – that means that it’s still in a testing phase, so not everything we’d like to do has been done quite yet. It also means that many of the things we’ve done to the project itself are developer-oriented (although this can still result in better mods for everyone) – because we believe it’s important to build a solid technical foundation before working on quality-of-life features.
Right now, the following things are already true:
- Quilt takes a community-focused approach to just about everything, making plenty of room for people to voice their opinions and weigh in on important development decisions before they happen, and working with the community to meet its members’ needs in community spaces
- QuiltFlower, Quilt’s decompiler project, has been vastly improved compared to FernFlower and the other FernFlower forks used in the modding sphere, producing far more readable and more accurate decompiled code for modders to work with
- Quilt Mappings, Quilt’s mappings project, does not have a clean-room policy, which means that developers are welcome to use whatever mappings they’d prefer, and they’ll still be able to get mod development support in Quilt community spaces; we also hope that this will result in higher-quality names going forward
- Quilt’s Standard Libraries (QSL) already provide a larger API surface than Fabric’s API in some instances, such as the QSL dynamic recipe module and the resource loader improvements
The following improvements are also planned for a full release:
- Clearer errors when required mods are missing or mods are incompatible with each other – user-friendly errors are a large focus of some of our work, and we’re hoping to get some dedicated people working on that soon
- Automatic detection of QSL modules used by mods at compile-time, and automatic downloading of those modules at runtime, eliminating the requirement for users to download the entirety of QSL for Quilt mods using it to function (but this will be able to be reconfigured and disabled by users, if they’d prefer)
- An inclusive implementation for loader plugins, which will allow developers to modify how Quilt loads mods, and to load them from other sources – for example, this would allow a project like Sponge to natively integrate its plugins with Quilt’s Loader, if its developers wish to
- An intermediary mapping system called Hashed Mojmap which is automatically generated when new versions of Minecraft are released, meaning that Quilt’s core toolchain is usable on new snapshots immediately after they are released – Hashed Mojmap, unlike MCP and Intermediary, never requires human intervention to be released
- A new Gradle-based toolchain that replaces the existing one, which is currently based on Quilt’s fork of Fabric’s Loom
- The Chasm project, which will provide safer tooling for working with Java bytecode; acting as the backend for our Mixin implementation, but also allowing developers to easily add their own bytecode-manipulation tools – This is a project with implications far wider than just the modding community, and we’re very excited about it!
It’s worth noting that while many of these improvements are developer-oriented, they should allow for higher-quality mods that are more compatible with each other and require less development effort to maintain. Additionally, Quilt’s community-based approach attempts to focus on what’s best for its developers, focusing on the things that they need to write great mods while also taking the bigger picture into account, and avoiding playing favourites with larger mods or more well-known mod developers.