Wrote My Own Minecraft 1.8.9 Client
This is a Minecraft 1.8.9 client built from scratch. I picked 1.8.9 because old-school PvP is evergreen, the structure is clean, and there’s plenty of reference material. The base is the vanilla source decompiled with MCP 9.18 (stable_22); src/net/minecraft is basically the upstream pasted as-is, while everything I wrote myself goes into src/client and src/dwgx, kept separate from vanilla so I can roll back on a whim when I break something.
The build is deliberately crude. Java 8 compiled by hand with plain javac, no Gradle, no Maven, with a few PowerShell scripts holding compilation and startup together, output dumped into out\classes and dependencies hung off lib/*. No black boxes anywhere: whatever step I want to poke at, I lift the lid on it. One pitfall I hit here: don’t pass --assets and --assetsDir together, or it throws MultipleArgumentsForOption outright. Run vanilla once through the official launcher first to pull the assets down and you’re clean.
The layer I wrote myself is fairly complete. Combat has KillAura, AutoClicker, Velocity; movement has Fly, Speed, Eagle, NoFall, NoSlow; world has AntiVoid, AutoTool, FastPlace, Stealer. Everything hangs off a module framework I wrote, with event dispatch running over a synchronous bus with priorities, using snapshot dispatch so it doesn’t blow up when something gets modified mid-iteration. I added a read-only runtime bridge on top (GameBridge, PlayerBridge, WorldBridge) so reads all go through one path, keeping the feature layer from touching game state directly.
The UI took the most effort. ClickGUI and HUD both render as vectors through NanoVG, with the base migrated from LWJGL 2 to 3.3.3. The HUD editor supports dragging, snapping, anchoring, and docking, and sliders, dropdowns, toggles, and the color picker are all abstracted into components. Config is stored as JSON per profile, with atomic writes plus backups. Accounts go through Microsoft OAuth + Xbox Live, and I threw in en/zh/ja trilingual support along the way.
As it grew I even stuffed in an in-game IRC, with channels, friends, DMs, and a feed, cached locally in SQLite, backed by a standalone Netty + MariaDB (the IRCServer/ part needs JDK 21). The main menu got some self-indulgent extras too: animated backgrounds, Flappy Bird, Kirby, Nyan Cat, Sokoban, plus GLSL shader backgrounds and Bing wallpaper fetching.
I’m still pushing on it on and off, mainly wrapping up the LWJGL 2→3 migration, refactoring modules, and rewriting the UI. The build scripts are Windows-only with hardcoded paths; it works fine for me, but if you want to run it, fix the paths first. No license for now, so all rights reserved by default.