dwgx@blog:~$dwgx
> cd ../posts

Lavender (RISE): a 1.8.x Minecraft cheat client I built myself

// created

Lavender is a 1.8.x Minecraft cheat client, codenamed RISE, something I’d wanted to build for years. I shelved it for a while, dug it back out, and republished it; it’s now an archived project and no longer maintained. 1.8 was the hottest version for PvP servers and Hypixel back then, and I wanted to take all the tricks in my head and build them out one by one on that old engine. Cheat clients have been done to death, but building one from scratch is a lot more work than it sounds.

Lavender

Modules, Components, and Commands aren’t manually newed up and then registered. On startup it scans the package with reflection, and anything extending a base class gets pulled into its manager automatically, so writing a new feature just means writing the class, with no going back to add registration. Back then it was pure laziness, but looking back, that auto-discovery is actually the part I’m happiest with.

The base is MCP-decompiled net.minecraft.*, cut into directly. For multi-version compatibility it integrates ViaMCP, so a 1.8 client can connect to servers on higher versions too. Events run through a hand-written EventBus that dispatches rendering, keypresses, and network packets. module/impl/ is full of real classes: Combat has KillAura, Velocity, Criticals; Movement has Flight, Speed, Scaffold; Render has a pile of ESP, Tracers, HUD; Exploit is packed with the old tricks like Crasher, Disabler, PingSpoof. The GUI is a hand-written ClickGUI with themes, and config is saved to latest.json and flushed back automatically when you close the client.

The build is the most painful part. There’s no Gradle/Maven script in the repo; back then I set it up by hand in IDEA: mark src/java as the source root, drop in Lombok, ViaMCP, and the 1.8 libraries and assets myself, and point the natives path manually with -Djava.library.path. The entry point in Start.java hand-assembles the launch arguments (that --version Lavender --assetIndex 1.8 --userProperties {} string). Reproducing it takes some patience; I didn’t add a build script, keeping it in that hand-configured state from back then.

The version stopped at 1.0 and never moved after that; it’s now archived and unmaintained, open-sourced under AGPL-3.0. I put it out there just as a keepsake for the few people who messed around with it with me back then.