Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/booky10/stackdeobfuscator

Minecraft fabric mod for making errors readable
https://github.com/booky10/stackdeobfuscator

fabric minecraft mod

Last synced: 2 months ago
JSON representation

Minecraft fabric mod for making errors readable

Awesome Lists containing this project

README

        

# Stack Deobfuscator

## Downloads

- Modrinth: https://modrinth.com/mod/stackdeobf
- Curseforge: https://curseforge.com/minecraft/mc-mods/stackdeobf

The configuration is documented on the [wiki](https://github.com/booky10/StackDeobfuscator/wiki/Configuration).

A hosted web-version is available at [stackdeobf.booky.dev](https://stackdeobf.booky.dev/).
See [wiki](https://github.com/booky10/StackDeobfuscator/wiki/Web-Remapping#installation-self-hosting) for self-hosting
this page.

## What does this mod do?

All errors displayed in the console and all crash reports will be remapped from unreadable production names (e.g.
`net.minecraft.class_310`) to readable mapped names (e.g. `net.minecraft.client.MinecraftClient`).

This allows mod developers to more easily identify issues in a non-development environment, as the errors are instantly
human-readable.

### Comparison

Before

> ```
> [23:13:08] [Render thread/ERROR]: Reported exception thrown!
> net.minecraft.class_148: Manually triggered debug crash
> at net.minecraft.class_309.method_1474(class_309.java:509) ~[client-intermediary.jar:?]
> at net.minecraft.class_310.method_1574(class_310.java:1955) ~[client-intermediary.jar:?]
> at net.minecraft.class_310.method_1523(class_310.java:1180) ~[client-intermediary.jar:?]
> at net.minecraft.class_310.method_1514(class_310.java:801) ~[client-intermediary.jar:?]
> at net.minecraft.client.main.Main.main(Main.java:237) ~[minecraft-1.19.4-client.jar:?]
> at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462) ~[fabric-loader-0.14.18.jar:?]
> at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.14.18.jar:?]
> at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.18.jar:?]
> at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) ~[NewLaunch.jar:?]
> at org.prismlauncher.EntryPoint.listen(EntryPoint.java:126) ~[NewLaunch.jar:?]
> at org.prismlauncher.EntryPoint.main(EntryPoint.java:71) ~[NewLaunch.jar:?]
> Caused by: java.lang.Throwable: Manually triggered debug crash
> at net.minecraft.class_309.method_1474(class_309.java:506) ~[client-intermediary.jar:?]
> ... 10 more
> ```

After (yarn/quilt mappings)

> ```
> [23:11:25] [Render thread/ERROR]: Reported exception thrown!
> net.minecraft.util.crash.CrashException: Manually triggered debug crash
> at net.minecraft.client.Keyboard.pollDebugCrash(Keyboard.java:509) ~[client-intermediary.jar:?]
> at net.minecraft.client.MinecraftClient.tick(MinecraftClient.java:1955) ~[client-intermediary.jar:?]
> at net.minecraft.client.MinecraftClient.render(MinecraftClient.java:1180) ~[client-intermediary.jar:?]
> at net.minecraft.client.MinecraftClient.run(MinecraftClient.java:801) ~[client-intermediary.jar:?]
> at net.minecraft.client.main.Main.main(Main.java:237) ~[minecraft-1.19.4-client.jar:?]
> at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462) ~[fabric-loader-0.14.18.jar:?]
> at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.14.18.jar:?]
> at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.18.jar:?]
> at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) ~[NewLaunch.jar:?]
> at org.prismlauncher.EntryPoint.listen(EntryPoint.java:126) ~[NewLaunch.jar:?]
> at org.prismlauncher.EntryPoint.main(EntryPoint.java:71) ~[NewLaunch.jar:?]
> Caused by: java.lang.Throwable: Manually triggered debug crash
> at net.minecraft.client.Keyboard.pollDebugCrash(Keyboard.java:506) ~[client-intermediary.jar:?]
> ... 10 more
> ```

After (mojang mappings)

> ```
> [23:04:12] [Render thread/ERROR]: Reported exception thrown!
> net.minecraft.ReportedException: Manually triggered debug crash
> at net.minecraft.client.KeyboardHandler.tick(KeyboardHandler.java:509) ~[client-intermediary.jar:?]
> at net.minecraft.client.Minecraft.tick(Minecraft.java:1955) ~[client-intermediary.jar:?]
> at net.minecraft.client.Minecraft.runTick(Minecraft.java:1180) ~[client-intermediary.jar:?]
> at net.minecraft.client.Minecraft.run(Minecraft.java:801) ~[client-intermediary.jar:?]
> at net.minecraft.client.main.Main.main(Main.java:237) ~[minecraft-1.19.4-client.jar:?]
> at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462) ~[fabric-loader-0.14.18.jar:?]
> at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.14.18.jar:?]
> at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.18.jar:?]
> at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) ~[NewLaunch.jar:?]
> at org.prismlauncher.EntryPoint.listen(EntryPoint.java:126) ~[NewLaunch.jar:?]
> at org.prismlauncher.EntryPoint.main(EntryPoint.java:71) ~[NewLaunch.jar:?]
> Caused by: java.lang.Throwable: Manually triggered debug crash
> at net.minecraft.client.KeyboardHandler.tick(KeyboardHandler.java:506) ~[client-intermediary.jar:?]
> ... 10 more
> ```

## Mappings Overview

Mappings are downloaded and parsed asynchronously. They are downloaded only once per version.
Yarn and Quilt refresh their version every 48 hours to check for updates.

| Mappings | Compatible Minecraft Versions | Download Size (zipped¹)² | Cached Size (gzipped)² |
|----------|---------------------------------------------|----------------------------------------|-------------------------------------|
| Yarn | 18w49a (1.14 snapshot) or higher | `1.4 MiB` | `1.4 MiB` |
| Quilt | 1.18.2 or higher | `1.4 MiB` (+`1.1 MiB` below 1.19.2) | `1.4 MiB` (+`1.1 MiB` below 1.19.2) |
| Mojang | 1.14.4 and 19w36a (1.15 snapshot) or higher | `9.0 MiB` (uncompressed) + `559.1 KiB` | `1.3 MiB` + `558.6 KiB` |

¹: Mojang mappings are not compressed

²: Sizes as of 12th May 2024 (1.20.6 is latest)

## Building

```shell
./gradlew build # remove "./" on windows
```

The output jar can be found in `build` → `libs`.

## License

This project is licensed under [**LGPL-3.0-only**](./COPYING.LESSER) unless specified otherwise.