A screenshot of Enigma Enigma is a Java application that allows you to browse decompiled Java sources from a Jar file. The source browser highlights the obfuscated class/field/method/argument names and allows easy renaming. All the mappings are saved internally to an efficient data structure which can be saved/loaded. Enigma also includes many code browsing features such as declaration lookup, call graph searches, and inheritance hierarchy browsing. Enigma even allows you to convert mappings between different versions of the Jar file using an intelligent matching system.

Development status

Enigma is currently Retired.

No further development will happen.

Enigma mappings for Minecraft

Enigma was at some point used to deobfuscate the Minecraft v1.8.3 client.

These mappings were collected and managed using an Open Source philosophy on BitBucket. All of the mappings were freely available under a premissive Creative Commons license. Tragically, BitBucket has since deleted all the Mercurial projects and the mappings are no longer there. =(

NOTE:

BitBucked deleted all Mercurial projects, so the instructions below no longer work.

The instructions we used for building the mappings are preserved below for posterity, even though the links don't work anymore.

Download the mappings

Each version of the mappings lives in its own branch. To download the mappings for a certain version of Minecraft, navigate to that branch on BitBucket and then download the .mappings file.

Contributing to the mappings

We manage the mappings file using the Mercurial repository on BitBucket and anyone is welcome to contribute. I tried to find a way to make the repo writable by anyone, but there doesn't seem to be an option for that on BitBucket. I suppose that could be a security issue. If you want to push to the repo, just send me a request with your BitBucket account name, and I'll give you write access. The goal is to let anyone contribute mappings if they want to.

Before you start a deobfuscating session, make sure you've pulled the latest mappings from the repo. When you're done, merge/push your changes back to the repo. The file format I've chosen for the mappings is a human-readable line-by-line text format, so hopefully Mercurial will be a useful tool for synchronizing the mappings. We'll see how this works. =)

A word of caution: keep each commit short and don't spend too long working on it. If you build up your commit over several days, it is likely that other contributors will have made commits during that time. When you're ready to push your changes, you may find it difficult to deal with the resulting merge conflicts.

Community

Leave comments and join the discussion in the Minecraft-osphere.

Minecraft forums

Enigma thread

Enigma is powered by the exceptional Procyon Java decompiler which is also open source.