A flexible and lightweight Java mod-loader for Minecraft, built from the ground-up.
Cichlid is currently in an alpha state. It's not complete, and there's a lot of rough edges. It's not recommended for new players or modders right now.
Even this website is basically a placeholder right now. It's mostly oriented towards those who are already modders. More will come in the future, but as always, things take time, and time is limited.
If you're still interested, feel free to try it out. If you need some help or have feedback, please let us know on Discord!
Cichlid is a brand-new mod-loader for Minecraft, built from the ground-up. It takes a lot of inspiration from existing projects though. There's a lot that's already been done right, but just as much has room for improvement.
Hello! TropheusJ, the creator of Cichlid, speaking (well, typing).
Yes! Another loader. (Sorry).
Cichlid was created out of a desire for something better. Existing loaders are functional, sure. Most people would even argue that one is good and the other is bad. Even I have my preference, but it's pick-your-poison. There's a lot that I am dissatisfied with on both the Fabric and Neoforge sides. Things that are effectively impossible to change at this point.
I could just go on with my life and deal with it, but I have an opportunity to make modding more enjoyable. For myself, and maybe others too. I feel like not trying would be foolish. And so, behold. Cichlid.
My main goal with this project is to improve the modding experience. Even if that's done by salvaging it for parts later down the line, I'd consider it a success.
- TropheusJ
Cichlid will always be lightweight and unintrusive. It should never get it your way while developing, and it should be nearly invisible when no mods are installed.
Cichlid embraces vanilla's designs. APIs should be additive, extending what's already there, not replacing it.
Cichlid doesn't hold on to the past.
There will never be an official "LTS" modding version. The main supported version will always be the newest one.
No component of Cichlid is set in stone. If drastic changes would improve the project, they'll be made.
Cichlid is a Java Agent. If you're unaware, the Java Agent API is Java's officially supported method of modifying ("instrumenting") existing Java programs. It has everything you need for a mod loader, without commiting atrocities against classloaders.
Standalone Cichlid is capable of loading on every version of Minecraft, although the tooling for mods isn't quite there yet. It's barely even tied to Minecraft, it would be pretty trivial to disconnect it in a fork. It's also nearly futureproof, with the only problem being Java version bumps.
Sorry Fabric, point for Neoforge. Yarn should've been dropped years ago.
Mojmap is king in the Cichlid ecosystem. Mods are compiled to it, Cichlid remaps the game to it, and it's all that's currently supported by CichlidGradle.
It's planned but low priority for it to be possible to use different mappings in development environments. Parchment support is high priority.
CichlidGradle is Cichlid's Gradle plugin for mod development. It's been designed from the ground-up using modern Gradle best practices. It's fully configuration cache compatible, does no work during configuration, and probably won't deal psychic damage as you use it.
Plot twist: Cichlid doesn't actually load mods*. Cichlid loads plugins, which load mods.
Plugins fully determine how each file in the mods folder is handled, and can also find mods outside of it. Plugin that loads datapacks as mods? Sure. Plugin that compiles source code? Why not. Plugin that loads groovy scripts? If you insist.
*it does have a built-in plugin for standard mods, don't worry
Mods and plugins can finally have dependencies only apply in certain cases. Some examples include a client-side dependency, or an incompatibility that only triggers when a 3rd mod is not present.
Cichlid uses FlexVer by unascribed, which is a flexible SemVer-compatible versioning scheme. It lets mods and plugins declare their versions however they want, while still producing reasonable comparisons.
Sushi is a bytecode transformation framework built from the ground-up.
Sushi is data-driven, extensible, and flexible. It's designed to be a replacement for Mixin (+Extras) that maintains the compatibility and flexibility while allowing for new opportunities, such as...
Disclaimer: this is still WIP as of writing this, but it's actively in development.
Sushi was primarily created so bytecode transformations can be safely applied to source code in development environments, finally bringing transforming up to par with patching.
Transformers from both your own project and its libraries will be visible in Minecraft sources.
If you're a player, you probably shouldn't. There's still a lot of work before Cichlid is ready for the average mod user. And there's no mods for it yet anyway, so...
If you're a modder, you're welcome to give it a try if interested. There's no template mod yet, but you can see a sample in the CichlidGradle root project. Join us on Discord if you want further information.
Cichlid was first revealed to the public at BlanketCon 25. The recording can be found here, if you'd prefer a video explaining it.