Language

Modern Runtime Deobfuscation

Modern Runtime Deobfuscation

Modrinth

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

18 downloads updated 22d ago
latest v1.0.5 Modrinth
Forge 1.20.1 – 1.20.1 Utility

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

Disclaimer

This mod was written for personal use. Claude was used extensively throughout development.
No AI-generated assets are otherwise present.

Releases on GitHub also include virustotal scan results with verifiable hashes.

Source / License

MIT. Source on GitHub.

Versions

Release
1.0.5
forge · 1.20.1 · 22d ago
Maintenance release. ## Changes - Preserved more Log4j2 appender behavior during remap wrapping, including appender filters, error handling, and…
15
Release
1.0.4
forge · 1.20.1 · 24d ago
Maintenance release. - **Throwable converters now preserve the layout's format.** `%ex`, `%xEx`, and `%rEx` each delegate to their matching built-in converter…
1
Release
1.0.3
forge · 1.20.1 · 25d ago
2

Comments 0

No comments yet. Be the first to share your thoughts.

Download Modern Runtime Deobfuscation

Files are served directly from the original source. Modgrid does not host or modify them.