fixes
This commit is contained in:
1 parent
83aea53e57
commit
aa4f6b6ddc
842 files changed
+47284
-91563
No files matched your search
@@ -0,0 +1,50 @@
|
||||
# Readability refactor
|
||||
|
||||
The decompiled tree was still Zelix-KlassMaster-shaped: methods took a packed `Object[]` plus a fake `long` key,
|
||||
every class carried unused reflection helpers, and almost every identifier was `a`, `b_float____`, `var12` or
|
||||
`RenderHelper27`. This pass turned it into normal, readable Java without changing behaviour.
|
||||
|
||||
## What changed
|
||||
|
||||
**Structure** (done with a javac-driven tool, so every call site was resolved by the compiler, not by text matching):
|
||||
- `m(Object[] a) { T x = (T) a[0]; long key = (Long) a[1]; ... }` called as `m(new Object[]{v, key})` became
|
||||
`m(T x)` called as `m(v)` — 1,488 method families, 7,262 call sites; constructors lost their trailing key too.
|
||||
- The key plumbing (`long k2 = key ^ 0x...L;`, `var1 = 0L;`) is gone (~5,300 statements).
|
||||
- Removed: ~1,500 unused per-class reflection helpers, 445 no-op string-table calls (`Event.b();`), 1,302 redundant
|
||||
casts (`(Float) floatSetting.getValue()`), unused locals/imports, and 30 dead classes — including the obfuscator's
|
||||
key-generator runtime that an earlier pass had misnamed `BufferBuilder`/`RenderHelper33`/`VertexSink`.
|
||||
- Decompiler stack temporaries (`float var10002 = ...; f(var10002)`) were inlined back into expressions wherever the
|
||||
evaluation order provably stays the same; constant tables recovered by the previous pipeline were folded into literals.
|
||||
|
||||
**Names**: ~276 classes, ~2,400 fields, ~2,200 method families (overrides renamed together) and ~8,300 locals/parameters
|
||||
now have descriptive names. Module setting fields are named after their UI display names, event classes after the game
|
||||
hook that fires them, `@Subscribe` handlers `on<Event>`, hook handlers after the hooked method and injection point.
|
||||
`docs/CODE_MAP.md` describes every class; `docs/rename_log.tsv` maps each old class/field/method name to its new one.
|
||||
(`docs/classmap*.tsv`, `docs/mapping.tsv` and `docs/notes/` describe the tree *before* this refactor.)
|
||||
|
||||
**Runtime contracts updated alongside** (these bind by string, so the compiler cannot check them):
|
||||
- `prestige_ui/manifest_live.json` — setting `field` names rewritten for all 686 settings.
|
||||
- `ui/bridge/Bridge` — calls `Module.toggle()` without the old packed argument.
|
||||
- `ui/mixin/EventBusStatsMixin` — targets `post(Event)` instead of the old `post(Object[])` descriptor.
|
||||
- `ui/DevCmd` — uses compile-checked references instead of reflection on obfuscated names.
|
||||
- `prestige-engine/transformers.list` — three empty `MinecraftClient` transformers removed, the remaining one renamed.
|
||||
|
||||
## Bug fixed: modules switching off when the menu closes
|
||||
The client's keybind flag means **hold** (active only while the key is down, switched off whenever a screen opens), but
|
||||
the previous pipeline had named it `toggleMode` and the ImGui menu was built on that name, so it showed the flag as
|
||||
"Toggle" and set it when a key was bound. Every key bound in the menu became a hold bind; closing the menu with the menu
|
||||
key (whose release briefly opens the legacy `ClickGuiScreen`) then switched those modules off. The flag is now
|
||||
`KeybindSetting.holdMode` and `ui/bridge/Bridge` inverts it for the menu. The config format (`key.hold`) is unchanged;
|
||||
binds saved while the bug existed show as "Hold" and can be switched back to "Toggle" in the menu.
|
||||
|
||||
## How it was verified
|
||||
- Every pass recompiled the full tree with 0 errors; `gradlew build` succeeds.
|
||||
- Each rename pass re-attributed the tree and compared all ~122,000 references: every one still resolves to the same
|
||||
declaration as before (no shadowing, overload capture or accidental overrides).
|
||||
- A contract check loads the compiled classes and verifies every reflective name the UI bridge, `Bootstrap`, the manifest,
|
||||
the mixin configs, the transformer list and the Fabric entrypoints rely on.
|
||||
|
||||
## Known leftovers
|
||||
- Raw types (`List`, `Set`, `Map`) and some casts on lambdas are decompiler output and were left as they are.
|
||||
- A few names are best guesses where the original code is ambiguous or partly stripped (e.g. the empty `Native` stubs).
|
||||
- `engine/mixin/I00..N41` keep numeric names on purpose: `EnginePlugin` generates those names by index.
|
||||
Reference in new issue
Block a user