(or “i now have downloaded a mod for another mod for a mod’s API for a mod loader so that a mod can properly use another mod loader’s API to display the first mod correctly. this is now how minecraft modding works.)
Like any good Minecrafter from the bygone era of days past, I’ve been using and recommending Optifine as nearly a mandatory addition to Java Edition for as long as I’ve been playing the game. This hasn’t changed as the years go on, I loyally follow the Optifine branch for the latest edition. When I first heard of the Sodium magic, I was interested in a up and coming replacement for Optifine’s chunky codebase, but then the fine print of excluding all, save performance enhancements jumped out at me.
As the project and months progress, I still find the general temperament of Sodium’s community displeasing, and the blasé snide comments of “just add it in yourself if you want it” grating on myself, doubly-so as a creator who just wants the game to work smoothly. The exclusion of even basic Optifine features like a zoom button in Sodium (which must be added in via a mod), alongside a general niche zone for CIT support in general made it near-impossible to me to consider the switch.
Until my hand was forced, and I was told in one scoffing remark to piece together that a mod author no longer supports Optifine. Alright, bet.
Let me be very clear about my criticism here: Sodium is a fantastic performance mod and the changes of excluding all features save performance is, in part, from fear of becoming a lumbering Optifine with years of technical debt. However, the random names, featuresets, and lack of coherency to Sodium-adjacent mods serve to confuse any moderately computer-savvy individual with their expanding levels of complexity.
This new reliance on swapping one core mod to another mod that decided it’s strictly a performance mod– and everyone else can go stick it where the sun doesn’t shine is infuriating, needlessly confusing, and needs to be paired down into a controlled bundle release with multiple developers collaborating together.
The more mods you add into this soup, the more devs that join in the stirring, the more features diverge and the less “good soup” vibes I get trying to set up an installation of 1.17.1.
Sodium has lost that singular advantage of a clean codebase and lack of technical debt. Names make no sense, or are vague and require you to infer exactly what the dev is talking about coyly. Technical features that should be part of Sodium, like a basic access to the Fabric Rendering API doesn’t exist and instead must be added by another mod so that your Sodium-adjacent mod can use a Fabric API feature correctly to load itself inside of Sodium.
I am going mad.
Legitimately, I am going mad:
Fabric API, Fabric Language Kotlin, BFAPI
Core mod library and API support for most Fabric mods.
Sodium + Iris Bundle
Replaces Optifine with core performance enhancements and new rendering system for the game, alongside shader support from Optifine and specific performance edits made to Sodium for shaders.
Indium
Required core sub-mod for a majority of Sodium-adjacent mods, adding API access to the Fabric Rendering API.
LambdaBetterGrass
Requires Indium. Adds back in the Better Grass toggle from Optifine.
LamdbaDynamicLights
Requires Indium. Adds back in dynamic lighting from Optifine.
Continuity
Provides support for Optifine connected textures and glass pane fixes.
CIT Resewn
Standalone Fabric mod to use CIT resource packs outside of Optifine.
That is… *drumroll* ten mods total! Holy shit! Ten mods to even reach maybe-parity for creative Optifine features, and probably not counting all of the little visual things I still need to hunt down a mod for, figure out if it’s stable or not, figure out if it’s supported or not, check it’s for the correct 1.17 release, then check if it’ll crash my game. How am I supposed to make a tutorial for this???
At least I have a base to start working from.
…it’s all upwards from here?
edit – 27 December 2021:
Here’s my current Sodium-based setup for 1.17, ymmv:
And my current Sodium-based setup for 1.18:
(minus a working ReplayMod and with the new Iris/Sodium split)