Thursday, March 1, 2012

Update to 1.2

The update to 1.2 is finished.

The new MCP is changing the method parameters and local variable names, so almost everything had to be merged manually.

Last week I was experimenting with decompiling the latest snapshot (12w08a) and the results were mixed.

Decompiling the snapshot and bringing it to a compilable state is a lot of work. When new fields or methods are added, the obfuscation schema is shifting and has to be manually corrected. This means finding at which place the new elements are inserted, shifting the rest of the elements and decompiling again to see if the fix is working. Some bigger classes like Block or World have received a lot of changes in 1.2 (new world format, new blocks, etc.). Minecraft 1.2 has 959 classes and many of them have to be manually analyzed, fixed and rechecked. Even trivial changes like changing field visibility or adding method parameters require manual intervention.

This all is only to bring the source to compilable state, equivalent to the last decompiled version.

Then the new features have to be named. For this they have to be analyzed, where and how they are used and so on. Sometimes the only way to find what a new field does is to run Minecraft, change it's value in the debugger and see what happens.

The whole process is hard, but doable. As the MCP project shows after every release.

So be patient and if you can, go and donate to the projects which make Minecraft modding possible.