Add ZenClient.extractCloudAssets() that copies panel.png, ptr.png,
lie.wav and truth.wav from /assets/zen/cloud_assets/ on the classpath
into ConfigManager.CONFIG_DIR (~/.zen/configs). Existing files are
left untouched so user-replaced assets stick around. Called from
init() right after ConfigManager is constructed, since LieDetector's
TextureUtil/SoundUtil look up these files there.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- HudElement: drop the parallel 'visible' field and the isEnabled/
setEnabled overrides. The dual flag was getting out of sync with
Module.enabled, so HUD listeners never registered on the event bus
and onTick/onPacket never fired (PlayerListHud, KeyBindsHud and
PotionEffectsHud rendered as empty panels). The base Module.enabled
is now the single source of truth.
- HudElement: rename hudWidth/hudHeight to width/height and let
Lombok generate getters/setters; expose 'dragging' via @Setter so
callers don't need a hand-written setDragging.
- ChatScreenPatch: the chat-screen drag hook was reading/writing
isEnabled/setEnabled when it really meant dragging/setDragging,
which is why opening the chat would silently disable any HUD you
had on screen. Switch to isDragging/setDragging.
- Add cloud_assets/ (panel.png, ptr.png, lie.wav, truth.wav)
needed by LieDetector.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
HudElement.stopDragging() was clearing the 'visible' flag via
setEnabled(false), but HudManager.onTick calls stopDragging() on
every HUD every tick whenever no screen is open. The result is that
ModuleListHud, KeyBindsHud and every other HUD got disabled one tick
after construction and never rendered.
Make stopDragging() actually stop dragging — it now just flips the
'dragging' flag. Also fix the companion bugs: mousePressed() now sets
'dragging' (not 'visible'), and the 'dragging' field defaults to
false so HUDs are not born mid-drag.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Register HudManager and a fresh IntroAnimation on the event bus
during ZenClient bootstrap so HUDs actually tick and the intro
plays on first launch.
- Strip leftover System.out.println debug breadcrumbs from
NewClickGui, CategoryPanel, ModuleElement and the unused
BUILD_TAG print in ModuleElement.
- Drop the redundant 'initialized' static flag and the stray
NewClickGui instance constructed in the class initializer; the
Lombok @NonNull null check on render() was already enforced, so
the hand-written guard goes too.
- Remove the unused NumberSettingElement.sliderX field.
- Replace Module.getBind() with a Lombok @Getter on the field.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Remove AntiDebug, CallerTracker, GamePathLocator, SignatureUtil,
Unused1 and Unused2 from shit.zen.utils.misc — none are referenced
anywhere in the source tree. Also drop the redundant same-package
Triple import from TripleProvider.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Remove unused Encryption class (AES wrapper around shit.zen.utils)
and its construction from ZenClient bootstrap; drop dead TimerPatch
import.
- Defer ConfigManager.loadAll() and CommandManager.initCommands() so
configs load only after modules are registered, fixing values that
were silently discarded.
- Make isOwner() return true so the local user is treated as owner.
- Rename ZenClient.disconnectFromServer() to shutdown() and pin the
MinecraftPatch close hook to At.Type.HEAD so it runs before the
game tears down its subsystems.
- README: invite users to file issues / open PRs for missing features.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Rename ~2887 unreadable Procyon-decompiler locals/params (f/f2/fN,
n/n2, bl/bl2, nArray, bufferedImage, etc.) across 169 files to
context-aware camelCase identifiers (x, y, width, height, alpha,
color, sensitivity, etc.). Logic, control flow, field/method names
and method signatures (types/arity) are preserved; only local
variable and parameter names changed.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>