Modern Runtime Deobfuscation

Quick rating

Community listing page, reviews here may not be monitored by the author.

Modern Runtime Deobfuscation

No reviews yet

Rewrites SRG method and field tokens in stack traces of logs & crash reports into readable Mojang names at runtime.

Mod Loaders
Minecraft

About

Description

When Forge 1.20.1 crashes, the log shows method names like m_109093_ instead of render. This mod rewrites those tokens on the fly. The substitution happens in the in-game console, latest.log, and crash-report .txt files, so you can actually read what blew up.

What it looks like

Before:

java.lang.NullPointerException
    at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:869)
    at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1184)

After:

java.lang.NullPointerException
    at net.minecraft.client.renderer.GameRenderer.render(GameRenderer.java:869)
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1184)

Features

  • Live deobfuscation for debugging purposes.
  • Works on both client and dedicated server.
  • Uses Mojang's official 1.20.1 mappings.
  • Mappings download once on first launch, then cache locally (~5 MB on disk).
  • Covers stack traces, crash reports, and Java's helpful-NPE messages.
  • Zero config required. Just drop the jar in mods/.

Installation

  1. Download the jar and put it in your mods/ folder.
  2. Launch the game. On first run the mod downloads Mojang's mappings (a few seconds). After that it reads from cache.

Compatibility

  • Minecraft: 1.20.1
  • Loader: Forge 47+
  • Side: client + server (works on either, useful on both)

Optional configuration

config/moderndeobf-common.toml is auto-created on first launch with these toggles:

  • enabled: master switch
  • remapCrashReports: also rewrite .txt crash dumps
  • downloadMappingsIfMissing: set to false for air-gapped use (prepopulate the cache yourself)

Known limits

  • Very early crashes. A handful of Mixin warnings that fire before the mod's constructor runs will keep raw SRG tokens. Same limit StackDeobfuscator has on Fabric.
  • Custom log lines. Mods that hand-format SRG names into their own LOGGER.info() calls aren't caught. Only stack traces and Java's NPE messages are.
  • Parameter names. Mojang's mappings don't include them; this mod doesn't make them up.

About the mappings

The jar contains no Mojang mapping data. On first launch the mod downloads them directly from Mojang's CDN (the URL listed in version_manifest_v2.json) and composes a local lookup table under <gameDir>/moderndeobf/cache/.

Credits

Source / License

MIT. Source on GitHub.