Today Mojang announced they will be partially open sourcing the Minecraft game engine, starting today with two key libraries, with additional portions of the game engine being released over time. The released Java source code is available on GitHub under the MIT open source license. The two parts released today are composed of Brigadier and DataFixerUpper.
Details from Minecraft.net:
Well, the lovely folks on Stockholm’s Minecraft Java team are giving you just that, by opening some of Minecraft’s code as libraries so they can be used however you like! Want to use them to improve your Minecraft mods? Great idea! Want to use them for your own projects? Go for it, just don’t forget to credit us! Want to use them to help improve pieces of the Minecraft Java engine? Thanks, we really appreciate it!
“I’m so proud of that name!” Nathan says. “Brigadier is the name of the command engine that Minecraft uses.” Brigadier is also the first library we’ve opened up!
“So in the game you can type something like
/give Dinnerbone sticksand then that goes internally into Brigadier and breaks it down into pieces. Figures out what are you trying to do with this random piece of text.”
“The name is so stupid that we had to keep it,” explains Nathan, unapologetically. DataFixerUpper does exactly what it sounds like, and it’s one of the most important parts of the Minecraft game engine. It’s also the second library we’re opening up!
“The problem that we have in Minecraft, that I’m pretty sure every game has, is that data changes over time,” says Nathan. “we add a thing into Minecraft and then we kind of have to change how we store level data, how we store all the save files and stuff to accommodate it.
On the future:
The Java team will be opening up more libraries soon and we’ll update this article when they do. One library under consideration is Blaze3D – a complete rewrite of the render engine that we’re aiming to implement for 1.14. For now, why not use your programming expertise with our existing libraries? Don’t forget to leave feedback on the GitHub page or reach out to Nathan on Twitter!