Andrew Porter is creating Software
0
patrons
$0
per month
My name is Andrew Porter, aka LinkTheProgrammer. I'm not necessarily anything special, but I enjoy programming. The programming language I commonly use is Java, but I might consider other programming languages if I have time.

My main project is called Quantum API, for the popular sandbox game, Minecraft. You see, Mojang, the creators of Minecraft, allow you to make modifications to the game; everyone calls them "mods" for short.

What Quantum API allows you to do is make these mods in a more organized manner, but first, a short history, and why I am building this API as a result, so you can get a better idea of why I am making Quantum API. Oh, by the way, API stands for Applications Programming Interface, but that term is used ubiquitously, even though it primarily only makes sense in an Operating System environment.

A Short History of Modding, and Why I Started Quantum API

You see, Minecraft itself is made in Java which can easily be decompiled, or reverse engineered, from bytecode to readable source code, and you can even recover the original names of variables and classes, and even method parameter names if the software was compiled with debug symbols, but Mojang decided to make our lives miserable: they obfuscate their releases, meaning, all the symbols for Minecraft, instead of having neat little names for a class such as Block.class, you get a gibberish name like abx.class in software, and that too for the variables.

As you can imagine, obfuscation makes it very difficult to do anything related to modifications if you can't read the code you're modifying. That is where MCP, or  Mod Coder Pack, comes into play.

A community of modders decided to come together and figure out what all the obfuscated code means, and then rename them accordingly: crowd-sourced de-obfuscation. Now that we have readable source code, we can now modify Minecraft to our heart's content! Yay!

Except, one problem: you're a modder who is hopefully experienced in Java programming, and there are about a hundred other modders, each with at least one, maybe two, or even a third mod, that has to work with your one or more mods, so how do you fix that?

Well, after MCP came the Forge API, the de facto Modding API for Minecraft which almost every modder has used to this day.

Forge is an excellent API, and it actually works together with MCP. Now, modders don't have to worry so much about compatibility with other mods because the API can minimize the chance of conflicts, though not perfectly, so often times modders will make their mods in such a way that they try to increase the chances of being compatible with another mod, however, Forge API is not perfect as anyone can use a feature of the API called coremods which allow modders to modify the game directly for whatever reason the modder may have. For that reason, most modders will avoid using coremod functionality in their mods whenever possible to keep compatibility.

That isn't the whole problem either. Forge has at least two holes in it, the first one I already mentioned, which is coremods. The second hole is backwards compatibility. LexManos has said before that Minecraft Forge is meant to be a "simple frame around Minecraft", and that is as far as the paradigm of Forge API can reach. In other words, Forge may as well just be a layer to hide the obfuscation for each new version of Minecraft, and if a new version of Minecraft comes out and breaks everything like with what happened in the transition from Minecraft 1.7.10 to 1.8, when Mojang decided to change how Minecraft renders things, almost every mod was halted, and Forge API took months to update, and on top of that, all the other mods took months to update.

Even before Minecraft 1.8, mods would still lag behind, sometimes for months, because of how different the game was from version to version, or because of some major or minor incompatibility.

Things wouldn't have been this way if Forge API had kept a paradigm of backwards compatibility from the beginning, and people wouldn't have to wait for mods to update. They could just wait for Forge API to catch up with the new release of Minecraft, and then all their previous mods would still work!

Viva La Revolución!

Coincidentally, there was also  an issue with Bukkit, so it was never updated to Minecraft 1.8, and it was arguably the most popular server plugin platform, but it was DMCA'd by the owner, so come along an opportunity for new things, and you now have Sponge API, the solution and replacement for Bukkit!

Now you know a short history of Minecraft modding. The mess that was Minecraft 1.8 was the window that allowed me to start building Quantum API! It is an all-around solution that features compatibility on all fronts:

  • Backwards compatibility for mods across new Minecraft versions!
  • Forge mod compatibility (via my own Forge mod loader and API adapter)!
  • Sponge Plugin API compatibility (via adapter)!
  • Bukkit Plugin API compatibility (via adapter)!
  • Plans for a Minecraft Scripting Language (Domain-Specific Language) for scripting and modding Minecraft!
You can find a summary of Quantum API on the Minecraft Forums page at j.mp/QuantumAPI
My name is Andrew Porter, aka LinkTheProgrammer. I'm not necessarily anything special, but I enjoy programming. The programming language I commonly use is Java, but I might consider other programming languages if I have time.

My main project is called Quantum API, for the popular sandbox game, Minecraft. You see, Mojang, the creators of Minecraft, allow you to make modifications to the game; everyone calls them "mods" for short.

What Quantum API allows you to do is make these mods in a more organized manner, but first, a short history, and why I am building this API as a result, so you can get a better idea of why I am making Quantum API. Oh, by the way, API stands for Applications Programming Interface, but that term is used ubiquitously, even though it primarily only makes sense in an Operating System environment.

A Short History of Modding, and Why I Started Quantum API

You see, Minecraft itself is made in Java which can easily be decompiled, or reverse engineered, from bytecode to readable source code, and you can even recover the original names of variables and classes, and even method parameter names if the software was compiled with debug symbols, but Mojang decided to make our lives miserable: they obfuscate their releases, meaning, all the symbols for Minecraft, instead of having neat little names for a class such as Block.class, you get a gibberish name like abx.class in software, and that too for the variables.

As you can imagine, obfuscation makes it very difficult to do anything related to modifications if you can't read the code you're modifying. That is where MCP, or  Mod Coder Pack, comes into play.

A community of modders decided to come together and figure out what all the obfuscated code means, and then rename them accordingly: crowd-sourced de-obfuscation. Now that we have readable source code, we can now modify Minecraft to our heart's content! Yay!

Except, one problem: you're a modder who is hopefully experienced in Java programming, and there are about a hundred other modders, each with at least one, maybe two, or even a third mod, that has to work with your one or more mods, so how do you fix that?

Well, after MCP came the Forge API, the de facto Modding API for Minecraft which almost every modder has used to this day.

Forge is an excellent API, and it actually works together with MCP. Now, modders don't have to worry so much about compatibility with other mods because the API can minimize the chance of conflicts, though not perfectly, so often times modders will make their mods in such a way that they try to increase the chances of being compatible with another mod, however, Forge API is not perfect as anyone can use a feature of the API called coremods which allow modders to modify the game directly for whatever reason the modder may have. For that reason, most modders will avoid using coremod functionality in their mods whenever possible to keep compatibility.

That isn't the whole problem either. Forge has at least two holes in it, the first one I already mentioned, which is coremods. The second hole is backwards compatibility. LexManos has said before that Minecraft Forge is meant to be a "simple frame around Minecraft", and that is as far as the paradigm of Forge API can reach. In other words, Forge may as well just be a layer to hide the obfuscation for each new version of Minecraft, and if a new version of Minecraft comes out and breaks everything like with what happened in the transition from Minecraft 1.7.10 to 1.8, when Mojang decided to change how Minecraft renders things, almost every mod was halted, and Forge API took months to update, and on top of that, all the other mods took months to update.

Even before Minecraft 1.8, mods would still lag behind, sometimes for months, because of how different the game was from version to version, or because of some major or minor incompatibility.

Things wouldn't have been this way if Forge API had kept a paradigm of backwards compatibility from the beginning, and people wouldn't have to wait for mods to update. They could just wait for Forge API to catch up with the new release of Minecraft, and then all their previous mods would still work!

Viva La Revolución!

Coincidentally, there was also  an issue with Bukkit, so it was never updated to Minecraft 1.8, and it was arguably the most popular server plugin platform, but it was DMCA'd by the owner, so come along an opportunity for new things, and you now have Sponge API, the solution and replacement for Bukkit!

Now you know a short history of Minecraft modding. The mess that was Minecraft 1.8 was the window that allowed me to start building Quantum API! It is an all-around solution that features compatibility on all fronts:

  • Backwards compatibility for mods across new Minecraft versions!
  • Forge mod compatibility (via my own Forge mod loader and API adapter)!
  • Sponge Plugin API compatibility (via adapter)!
  • Bukkit Plugin API compatibility (via adapter)!
  • Plans for a Minecraft Scripting Language (Domain-Specific Language) for scripting and modding Minecraft!
You can find a summary of Quantum API on the Minecraft Forums page at j.mp/QuantumAPI

Recent posts by Andrew Porter