I'm working with a server-addon for Minecraft, which happens to be obfuscated. I've always thought that, after obfuscation, it's impossible to restore the original class names because they're completely removed, and it's what I've read everywhere. After tinkering with it for a while, I noticed that when an uncaught exception appears in the console, it shows the obfuscated names of the classes (eg. at cratereloaded.aT.d), and then inside parenthesis, where it usually shows the name of the class and the offending line, it shows the original class name, which leads me to believe that it can actually be deobfuscated. But of all tools I've tried, none seems to be able to restore the original class name, even though after some hex examination I've confirmed the original class name IS actually embedded in the compiled '.class' files.
Is there any tool which is capable of using that to restore class names automatically?
Example stacktrace:
[03:49:57] [Server thread/ERROR]: Error occurred while disabling CrateReloaded v1.3.97.1 (Is it up to date?)
java.lang.NullPointerException: null
at cratereloaded.aT.d(CrateManager.java:303) ~[?:?]
at cratereloaded.aT.bm(CrateManager.java:298) ~[?:?]
at cratereloaded.aT.cleanup(CrateManager.java:83) ~[?:?]
at cratereloaded.aX.disable(Manager.java:27) ~[?:?]
at cratereloaded.b.cleanup(CrateReloaded.java:122) ~[?:?]
at cratereloaded.b.onDisable(CrateReloaded.java:109) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:266) ~[spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:361) [spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:421) [spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:414) [spigot.jar:git-Spigot-596221b-2c5c611]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.disablePlugins(CraftServer.java:342) [spigot.jar:git-Spigot-596221b-2c5c611]
at net.minecraft.server.v1_12_R1.MinecraftServer.stop(MinecraftServer.java:464) [spigot.jar:git-Spigot-596221b-2c5c611]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:612) [spigot.jar:git-Spigot-596221b-2c5c611]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]