- Java 80%
- C++ 14.9%
- Python 4.9%
- Shell 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Root cause of 'game won't start, empty dev log': dev mode stored the repo as a RELATIVE path (../), then spawn() did chdir(repo) before execvp - '../gradlew' was resolved against the NEW cwd and pointed outside the repo, so exec failed silently with exit 127 and only the log header was written. The repo path is now resolved with realpath (trailing slash normalized) and the version list no longer offers 26.x nodes in dev mode (they have no CLI runClient task; 1.21.11 was masked behind readdir order before). Also: - dist jar discovery now walks up to three exe-relative levels, so starting the binary from launcher/ or launcher/build finds dist/ and uses instance mode instead of silently falling back to dev mode - versions are sorted numerically (newest first, not readdir order) - versions with an already-downloaded instance are preferred as the default selection, avoiding an unexpected full download on first click Verified headlessly: dev-mode launch from launcher/ now writes gradle output to the log and boots the PVP client to the title screen; dry-runs from launcher/, launcher/build and repo root all resolve correctly. |
||
| docs | ||
| gradle | ||
| launcher | ||
| src | ||
| tools | ||
| versions | ||
| .gitignore | ||
| .zcodeignore | ||
| build.fabric.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle | ||
| stonecutter.gradle | ||
| stonecutter.properties.toml | ||
A modular, multi-version utility client for Fabric
ClickGUI with a live theme engine, deep Baritone & SeedcrackerX integration,
and a reskinned vanilla UI — one codebase from 1.20.1 all the way to 26.3.
✨ Features
| Area | What you get |
|---|---|
| ClickGUI | Free-floating panels per category with pixel icons on headers & module rows, smooth easing animations, collapsible panels, scroll, drag & drop — plus a dedicated Baritone panel with the most important Baritone settings (works with the Baritone API jar, and with the standalone jar via #-chat-command fallback) |
| Font | Custom proportional JetBrains Mono bitmap font rendered everywhere (menus, GUI, HUD, chat) with vanilla fallback for glyphs outside the atlas |
| Theme engine | Accent colors with animated rainbow wave, per-panel opacity, corner radius, animation speed — all live-editable, all persisted |
| Vanilla reskin | All vanilla buttons (main menu, options, …) are redrawn as translucent themed pills with hover gradients and small accent icons (mapped via translation keys, language-independent); in-game screens get the vanilla gaussian blur behind them |
| Menu logo & icons | TRXclient badge on the title screen, themed incl. version label; sidebar buttons get consistent menu icons with proper spacing (own glyph set, also on versions without vanilla icons) |
| World rendering | ESP (entity boxes), Tracers, BreadCrumbs (movement trail) and ChestESP (container outlines) as true line rendering visible through walls — immediate-mode depth-test-off on 1.20.1–1.21.4, vanilla always-on-top gizmos on 1.21.11/26.x |
| HUD modules | Watermark, Arraylist (animated slide-in), Info (FPS/ping/coords/dimension), Nametags, SeedStatus, Fullbright, Trajectories, Search |
| Inventory & tools | InventoryStealer (moves items between containers and inventory, with filters and auto-open), AutoTool (best hotbar tool for the targeted block), Replenish, AutoArmor, AutoEat, AutoPot/AutoSoup/AutoTotem |
| Accounts | Built-in Alt Manager on the title screen: save accounts to config/trxclient/alts.json, one-click session switching (offline UUID derivation, optional token), Microsoft login via OAuth device-code flow (email-free, refresh token stored per alt; the Azure client ID is configurable in the GUI — the default is the public Prism/MultiMC app ID, which Microsoft may reject from the consumers tenant at any time), and TheAltening integration (email/token + password via authserver.thealtening.com; on the Yarn versions the client session server is redirected to sessionserver.thealtening.com while a TheAltening alt is active, so server joins work on Altening-compatible servers) |
| Automation | AutoWalk & AutoMine via Baritone, AutoGear (bootstraps from an empty inventory: wood → wooden pickaxe → stone → iron + smelting → full diamond gear, crafting and smelting included) |
| Movement | Fly (creative-style flight with anti-kick), Speed, Step, NoSlow, ElytraFly, BoatFly, … |
| SeedcrackerX bridge | Receives found seeds through the official entrypoint, copies them to the clipboard, triggers finder reloads, live status in HUD |
| Persistence | Module states, keybinds, settings, panel positions and theme in config/trxclient/*.json |
🖥️ Native launcher (C++, own window frame)
TRXclient ships with its own native launcher (launcher/, plain C++17 on X11 — no toolkit, no web view). It draws its own window frame (undecorated window, custom title bar with drag / minimize / close / double-click maximize, resizable edges & corners) into a software framebuffer with FreeType text rendering, and offers two client profiles:
| Profile | Jar | Contents |
|---|---|---|
| Utility Mode | trxclient-<ver>+<mc>.jar |
The full catalog — Combat, Exploits, Automation, ESP/XRay, Baritone & SeedcrackerX (all 95 modules) |
| PVP Ready | trxclient-pvp-<ver>+<mc>.jar |
Only the 10 server-safe modules (Watermark, Info, Arraylist, TargetHUD, Trajectories, Fullbright, Sprint, AutoTool, MiddleClick, AutoReconnect). Every combat/exploit/ESP class and its mixins is physically absent from the jar — nothing to find on a screenshare, and all registered modules are anticheat-friendly HUD/QoL |
Both jars come from the same codebase (see “Client profiles” below); the PvP jar’s fabric.mod.json even names itself “TRXclient PvP”. The vanilla-reskin GUI works in both; empty categories (Combat, Exploits, …) are hidden automatically in PvP.
Build & run:
tools/build-dist.sh # builds both profiles → dist/<mc-version>/
cmake -B launcher/build launcher && cmake --build launcher/build
./launcher/build/trx-launcher # run from the repo root (finds dist/ automatically)
Microsoft login is built in (no browser extension, no in-game detour): the MICROSOFT-LOGIN button runs the OAuth2 device-code flow — the launcher shows a one-time code — click the link to open your browser, click the code to copy it — polls in the background, then walks the token chain MSA → Xbox Live → XSTS → Minecraft services and stores the account (with its refresh token) in ~/.local/share/TRXclient/launcher.json. On launch the access token is refreshed automatically when needed and passed to the game as --accessToken/--uuid/--userType msa, so online mode just works; without an account the username field starts offline (Alt Manager still available in game). The default OAuth client is the public Auth Me mod app (e16699bb-2aa8-46da-b5e3-45cbcce29091) — the only commonly used public client whose device-code flow Microsoft still allows (the old Prism/MultiMC ID is rejected with AADSTS700016, the Xbox first-party ID returns unauthorized_client); a custom Azure app ID can be set as clientId in launcher.json or via --client-id. The same client ID fix (and a device-code polling bug: OAuth errors arrive as HTTP 400 and must not abort the poll loop) went into the in-game MicrosoftAuth as well.
What the launcher does: pick a profile card (username, RAM, MC version selectable), hit SPIEL STARTEN. In instance mode it assembles a complete Fabric instance under ~/.local/share/TRXclient/ — downloads the Minecraft version JSON + client jar, all libraries, natives extraction and the full asset index from Mojang’s piston-meta, plus Fabric Loader/API from the Fabric maven — and launches KnotClient with the profile jar in mods/. If no dist jars are found but the repo is there, it falls back to dev mode (gradlew :<v>:runClient -Ptrx.profile=…). The game starts with an offline username — sign in in game via the Alt Manager (Microsoft / TheAltening / offline).
Headless test flags (used by the E2E checks): --dry-run (print the assembled java command), --profile=pvp, --dist=DIR, --home=DIR, --screenshot=FILE (+ --click=X,Y, --after=MS) render the real UI and exit.
Client profiles (build-time)
The profile is a Gradle property consumed by build.fabric.gradle:
./gradlew -Ptrx.profile=utility build # default: src/utility/java is compiled in
./gradlew -Ptrx.profile=pvp build # risk sources excluded, mixins filtered
- The server-safe base modules are registered in
ModRegistry; the full catalog lives insrc/utility/java/…/UtilityModules.java, loaded reflectively viaProfileBridge— so the PvP jar compiles and runs without a single utility class. - PvP builds exclude
modules/combat|exploit|automation|seedcracker/**, all ESP/XRay/movement-risk classes, the four utility-only mixins (ReachMixin,XRayBlockMixin,ChamsMixin,EntityVelocityMixin, filtered fromtrxclient.mixins.jsontoo) andplatform/Knockback. - Watermark shows “TRXclient PVP” in the PvP jar;
fabric.mod.jsonname becomes “TRXclient PvP”.
🎮 Usage
| Key / Action | Effect |
|---|---|
| Right Shift | Open/close the ClickGUI (rebindable in the Theme panel) |
| Alt Manager button | Title screen (top of the sidebar) — manage accounts, click one to switch sessions |
| Left click on a module | Toggle it |
| Right click on a module | Expand settings |
| Drag a panel header | Move the panel (position is saved) |
| Right click on a header | Collapse/expand the panel |
Everything is in English; settings are generic (Boolean, Slider, Mode, Color, Text), so new modules automatically get GUI, config, keybinds and arraylist support.
🧰 Modules (95)
All modules live in the GUI panels below and support config persistence, keybinds and the arraylist.
Combat (30)
| Module | Description |
|---|---|
| AnchorAura | Places and detonates respawn anchors with glowstone in the Overworld |
| AntiBots | Detects server bots and ignores them in target selection |
| AutoCity | Breaks the enemy's surround blocks so CrystalAura can hit |
| Aura | Automatically attacks targets in range |
| AutoArmor | Automatically equips and replaces armor |
| AutoBowRelease | Fires the bow automatically at the configured tick |
| AutoClicker | Automatically clicks the attack button |
| AutoCrystal | Places and destroys end crystals automatically |
| BedAura | Places and detonates beds in the Nether/End for burst damage |
| AutoLog | Disconnects automatically at low health |
| AutoPot | Automatically throws healing potions |
| AutoSoup | Automatically eats soup at low health |
| AutoTotem | Automatically moves totems into the off-hand |
| AutoTrap | Traps enemies in blocks automatically |
| AutoXP | Throws XP bottles at targets in view |
| BowAim | Aim assist for bows with trajectory prediction |
| Criticals | Forces critical hits on attacks |
| FeetTrap | Walls off your own feet against explosions |
| HoleFill | Fills holes to deny safe positions |
| KeepSprint | Keeps sprinting after landing a hit |
| NoHitDelay | Removes the delay between attacks |
| PistonCrystal | Pushes crystals into the enemy hitbox with piston setups |
| Surround | Walls your feet in with obsidian/ender chests (crystal defense, optional 2 high) |
| Triggerbot | Attacks only what the crosshair covers (no auto-aim) |
| Velocity | Reduces or cancels knockback (horizontal/vertical in percent) |
| Replenish | Refills hotbar stacks from the inventory |
| SelfFill | Places a block into your own position (burrow) |
| SelfTrap | Builds a shell of blocks around yourself |
| SprintReset | Resets sprint on hit for maximum knockback |
| ThrowPot | Throws healing potions when activated |
Exploits (10)
| Module | Description |
|---|---|
| AntiHunger | Reduces hunger drain — packet mode strips sprint packets so the server never registers sprinting; tick mode breaks sprint periodically |
| Blink | Buffers movement packets and sends them in one burst (freeze/teleport for observers) |
| ClickTP | Teleports to the targeted block (sneak + attack) |
| Disabler | Sends invalid packet patterns (ground spoof / motion holds) to trip anticheat |
| FastBreak | Extra mining progress per tick with auto tool switch |
| NoFall | Prevents fall damage |
| PacketFly | Flight via self-built position packets (vanilla movement packets suppressed) |
| Phase | Glides through blocks (experimental) |
| PortalGodMode | Freezes you inside portals (server-dependent) |
| Reach | Increases attack and block reach |
Movement (17)
| Module | Description |
|---|---|
| BoatFly | Fly with boats |
| ElytraFly | Controlled elytra flight |
| EntityControl | Steer horses/striders without a saddle |
| EntityFly | Fly with mounts (horses, pigs, camels, striders — boats optional) |
| EntitySpeed | Faster riding |
| FastFall | Falls faster |
| FastSwim | Swims faster |
| Fly | Creative-style flight |
| Jesus | Walks on water and/or lava |
| Parkour | Jumps automatically at the last moment at block edges |
| SafeWalk | Prevents walking off edges without slowing down |
| Spider | Climbs vertical walls |
| NoSlow | No slow-down while using items |
| Speed | Increased movement speed |
| Sprint | Sprints automatically when moving forward |
| Strafe | Full air control over direction and acceleration |
| Step | Steps up full blocks automatically |
World (7)
| Module | Description |
|---|---|
| AutoTool | Switches to the best hotbar tool for the targeted block (pickaxe/axe/shovel/shears, best material tier; Always or only while mining) |
| BlockReach | Extra reach for placing and breaking only (separate from combat reach) |
| GhostHand | Opens containers and breaks blocks through walls (voxel-DDA packet interactions) |
| Nuker | Destroys all matching blocks in the radius (name filter list with ! exclusions, rotate + auto tool) |
| SchematicPrinter | Auto-builds .litematic/.schem projections block by block (own NBT parser, preview outlines) |
| FastPlace | No delay between block placements |
| Scaffold | Bridges under your feet automatically |
Misc (10)
| Module | Description |
|---|---|
| Announcer | Chat announcements for kills |
| AutoFish | Casts and reels the rod automatically (server-synced bite flag) |
| FakePlayer | Spawns a local client-side test dummy for testing combat modules safely |
| MiddleClick | Middle click throws a pearl or toggles the targeted player as friend (friends are ignored by all combat modules, stored in friends.json) |
| StashLogger | Logs storage clusters to a file while flying bases (dimension, coords, cluster size) |
| AntiAFK | Prevents AFK kicks |
| AutoEat | Eats automatically at low hunger |
| AutoReconnect | Reconnects automatically after disconnects |
| InventoryStealer | Moves items between the opened container and your inventory — direction (Steal/Stash), item filter (whitelist/blacklist), transfer delay with jitter, auto-close and auto-open of nearby containers |
| Example | Template with all setting types |
Automation (3)
| Module | Description |
|---|---|
| AutoGear | Bootstraps from an empty inventory to full diamond gear via Baritone (wood → planks → wooden pickaxe → stone → iron + smelting → diamond) |
| AutoMine | Baritone mines the selected ore automatically |
| AutoWalk | Keeps walking in the view direction via Baritone |
Render (17)
| Module | Description |
|---|---|
| Arraylist | Shows enabled modules top right with slide-in animation |
| BreadCrumbs | Draws a line trail of your movement (through walls, configurable color/length) |
| Chams | Renders players and mobs through walls (depth-override on 1.20.1–1.21.4, always-on-top outlines everywhere) |
| ChestESP | Outlines containers through walls — chests, barrels, shulkers, furnaces, hoppers, brewing stands, each with its own color |
| ESP | Draws entity bounding boxes through walls (player/mob colors, range) |
| Freecam | Detaches the camera from your body (noclip, body stays behind) |
| Fullbright | Client-side night vision for maximum brightness |
| HoleESP | Highlights safe 1x1 holes: bedrock green, obsidian yellow, unsafe red |
| Info | FPS, ping, coordinates and dimension |
| Nametags | Player list with health and distance (HUD) |
| Search (BlockESP) | Outlines configured blocks through walls (ores, spawners, portals) — optional legacy particles |
| TargetHUD | Info box for the current target: name, HP bar, armor score + durability, distance, win chance |
| XRay | Makes all blocks except the configured ores/valuables transparent (chunk re-mesh on toggle) |
| SeedStatus | Shows the SeedcrackerX status in the HUD |
| Tracers | Draws lines to entities through walls (color, range, limit) |
| Trajectories | Shows the flight path of held projectiles |
| Watermark | Client name and version in the top-left corner |
Seedcracker (1)
| Module | Description |
|---|---|
| SeedCracker | Bridges TRXclient to SeedcrackerX (seed reception, clipboard, finder reloads) |
📦 Versions
| Minecraft | Mappings | Java (runtime) | Fabric API | Baritone | Notes |
|---|---|---|---|---|---|
| 1.20.1 | Yarn | 17 | 0.92.12+1.20.1 | v1.10.5 | no vanilla blur API (dim only) |
| 1.21.1 | Yarn | 21 | 0.116.17+1.21.1 | v1.11.3 | |
| 1.21.4 | Yarn | 21 | 0.119.4+1.21.4 | v1.13.1 | |
| 1.21.11 | Yarn | 21 | 0.141.6+1.21.11 | v1.17.0 | |
| 26.3 | Mojang ("The Shift") | 25 | 0.161.0+26.3 | v1.20.0 | SDL input, render-state GUI |
🚀 Quick start
Build (needs nothing but a JDK — Gradle provisions the rest, incl. the Java 25 daemon JVM):
./gradlew build # builds ALL versions
./gradlew :26.3:build # build a single version
Finished mods land in versions/<version>/build/libs/trxclient-<version>+<mc>.jar.
Install (Prism Launcher):
- Create an instance for your target Minecraft version with Fabric Loader 0.19.5.
- Drop the matching
trxclient-*.jarintoinstances/<name>/minecraft/mods/. - Install Fabric API via the built-in Modrinth browser.
- Optional: Baritone — use the
baritone-api-fabric-…jar (the-standalone-jar is obfuscated and lacks the API classes TRXclient needs; see the table below) and SeedcrackerX ≥ 2.16.x for 26.3. - Launch — Java 17/21/25 depending on the version (Prism picks the right runtime automatically).
Run from source:
./gradlew :1.21.11:runClient # run configs exist for the Yarn versions
🏗️ How multi-version works
Four layers keep one codebase working across a decade of Minecraft:
- Versioned nodes + one central build script —
settings.gradledeclares the versions,build.fabric.gradleis evaluated per version viasc.current, and per-version dependency pins live instonecutter.properties.toml. - Preprocessor branches — where the vanilla API diverges,
//? if …branches compile exactly one variant per version (input reform, blur signatures, tick counter types). - Facades for third parties — modules never import
baritone.api.*directly, onlyBaritoneBridge(with a No-Op branch); SeedcrackerX talks to us through its own entrypoint. - A stable render zone — GUI/HUD draw only through
DrawContext-stable primitives plusRender2D(row-based rounded rects, no shaders).
"The Shift" / Minecraft 26.x
Since 26.1, Minecraft ships unobfuscated with official Mojang names — no more Yarn or Intermediary. 26.3 additionally replaced GLFW with SDL and moved GUI rendering to a render-state pipeline. This project handles it with:
dev.kikugie.loom-back-compatpicking the right Loom variant per node (fabric-loom-remap1.17.x vsfabric-loom1.18.x),- a Mojang-named source overlay in
versions/26.3/src/main/java/(34 classes) overriding the shared Yarn-named code per class, - SDL-aware input handling (
KeyEvent.key()scancode space,MouseButtonEventbuttons 1/3 normalized to GLFW semantics), - a Java 25 Gradle daemon (auto-provisioned from Adoptium if missing).
🧩 Dependencies at a glance
| Dependency | Compile time | Runtime |
|---|---|---|
| Baritone | API jar auto-downloaded from GitHub releases, modCompileOnly |
install baritone-api-fabric-… (NOT the -standalone- jar: it is obfuscated, has no baritone.api classes at runtime and crashes the integration) |
| SeedcrackerX | release jar auto-downloaded, compileOnly (API package lives in the main jar) |
install a matching SeedcrackerX build |
Both are optional — without them, automation modules and the seed status simply report "not installed".
📁 Project structure
TRXclient/
├── settings.gradle # Stonecutter tree: which versions exist
├── stonecutter.gradle # controller: active version, pinned Loom variants
├── build.fabric.gradle # central build script (evaluated per version)
├── stonecutter.properties.toml # per-version dependency pins
├── src/main/java/dev/trxclient/ # shared code (Yarn names, 1.20.1–1.21.11)
│ ├── core/ # modules, managers, keybinds, JSON config
│ ├── settings/ # boolean / slider / mode / color settings
│ ├── platform/Render2D # version-safe drawing helpers
│ ├── mixin/ # keyboard, HUD, title screen (logo, menu icons, Alt Manager button), world render, session accessors, packet/velocity/xray/chams hooks
│ ├── integration/ # Baritone & SeedcrackerX bridges
│ └── gui/ # ClickGUI: panels, components, theme engine
├── versions/26.3/src/... # Mojang-named overlay ("The Shift")
└── docs/logo.svg # project logo
📄 License
MIT — see the license file.