Minecraft deobufuscation mappings for v1.9 snapshot 15w31c

by Cuchaz

I just finished converting the open source Minecraft deobfuscation mappings from v1.8.8 to the latest snapshot for v1.9, 15w31c!

The deobfuscation mappings are available under a very permissive Creative Commons license so you're free to use them for just about whatever you want, as long as you abide by the Minecraft EULA.

Download the Minecraft 1.9 15w31c deobfuscation mappings here.

The mappings were created using the open-source Enigma tool mostly for Minecraft v1.8.3 by many contributors. I converted the mappings from v1.8.3 to 1.8.8 and to the 1.9 snapshot using Enigma's somewhat secret conversion tool.

A screenshot of Enigma's conversion tool

Enigma's mappings converter is mostly automated. It can match the vast majority of classes/fields/methods correctly without any human intervention even though the obfuscated names can change from version to version. There are still some manual steps though because the matching algorithm can't always figure out what maps to what. The above screenshot is from the class matcher GUI right when I started converting the 1.8.8 mappings to 1.9. Enigma figured out ~1800 of the classes by itself, but needed some help getting the rest. Enigma uses probabilistic matching, so the list of classes on the right is ranked by a percentage score. Most of the time, Enigma can find a pretty good match in the 90% range, but it won't automatically pick it to keep from returning false positives. Therefore, most of the manual matching process is just checking that Enigma's probabilistic match is the right one.

I've been keeping this tool somewhat of secret because it's completely undocumented and it currently requires editing and compiling code to use it. It's basically the complete opposite of user-friendly. It's not that I'm trying to keep it all for myself because I don't want anyone else wielding the awesome power of mappings conversion. Although, sometimes you can find out some really interesing things from staring at Minecraft's source code. Apparently witches are the best opponents for drinking games.

It's just that I'm lazy. =P I can use the converter just fine, but it would take a lot of work to teach someone else how to use it (eg, writing documentation, replacing code steps with GUI steps). Nevertheless, if you want to play with the conversion tool yourself, it's all open source. Try starting with the ConvertMain class and trying each of the nine functions (that are mostly commented out) in order, one-by-one. If you manage to get the converter to do something useful, awesome!

That all being said, the mappings aren't perfect. There are probably a few mistakes in there. If you find mappings the are incorrect, feel free to send a pull request with corrections. Or I can give you commit access to the repository and you can just push your changes.

Oh, and one more thing. If you're interested in the raw class/field/method matching between v1.8.8 and v1.9 15w31c, that info is saved in the *.matches files in the repo.