Mojang Making Moves To Support Minecraft Modding

By John Walker on February 28th, 2012 at 3:59 pm.

I'm now working on Spayed.

We’ve just had a note passed to us, under the door, that says Minecraft developers Mojang are about to announce the four main bods behind Bukkit have “joined ranks” with the company. Bukkit would be the Minecraft server mod that made running Minecraft servers so much easier, and enormously improves mod support on the server side. The plan is to have the same flexibility on the official Minecraft server. I barely understand what I’ve written, but this works better:

John: So will this mean that Minecraft will finally properly support modding?
Carl Manneh: Yes!

Mojang say,

“The plan is to build a fresh server API, and then extend it to support client-side modding (in one way or another). We will try to make it easy for bukkit users to convert if they wish to do so, but backwards compatibility is not guaranteed. We will, however, help bukkit to be compatible with 1.2, to avoid having a long gap while you wait for the official Minecraft server to catch up.”

Which is to say, their current API (Application Programming Interface) isn’t so good, and they’re getting a new one which will make mod support better. Why Bukkit? Mojang explains that they were after more than just modding – they want to look after the server admins too. They add,

“We hope that this will help the quality of Minecraft multi-player to improve, both for large and private family servers, while still being able to add fun stuff for the bigger audience.”

So, er, good! Proper mod support will be a many-splendoured thing, especially if you’re an occasional player like me, and find each time you go back none of your extras work any more. Here are lots more details from Bukkit.

__________________

« | »

, , .

56 Comments »

  1. lordcooper says:

    Mods are a terrible thing that are killing videogame integrity. You all know I’m right.

  2. starclaws says:

    Had a feeling this was coming. But I still hope they pick up more people’s mods to be released as part of the minecraft scene

  3. terry says:

    The four main bods excepting hey0, who actually made it, yes?

    • FrankTheCat says:

      as far as I remember, when beta 1.3 rolled around, hey0 abandoned his server project because of how many changes there were between 1.2 and 1.3. some other guys (who now run bukkit), got together to sort out the absolute mess that was hey0, and make it beta 1.3 ready. they ended up using very little from hey0 in bukkit, from what I understand.

      those were tumultuous days. the server I ran with a few friends was in limbo for weeks while bukkit was developed.

    • terry says:

      Ah, thanks for the clarification. I remember the switchover as being a tad chaotic, but not the details.

    • Kiskae says:

      Hey0 made hMod, the people behind bukkit joined him in developing it but around 1.3 Hey0 lost interest and they took over, at this point they wanted to improve the mod but hMod had too many issues to do that and that is when they started Bukkit

  4. zaphod42 says:

    ABOUT DAMN TIME! I’ve been waiting day-to-day for the Minecraft proper mod API since Notch announced he’d do it … almost a year ago. And even now, he’s not really doing it, and even Jeb’s not, they’ve handed it off to the bukkit guys. Ah well, I guess they’re busy with bigger and better things. Still though, this was needed like, forever ago.

    I haven’t played minecraft in awhile as the excitement is dying down and there’s less new stuff, if they had the mod API out right as the game was “finished” it would have really helped keep the momentum going.

  5. dustin says:

    You tease us with near-alliteration, and the disappoint with a single word? Rock Paper Shotgun has ceased to be a professional journalism outfit!

    • Chris D says:

      Mojang Making Moves To Motivate Minecraft Modding?

    • emertonom says:

      Mojang Making Moves to Make Minecraft Modding More Manageable.

    • runBAMrunfaster says:

      Mojang Moves to Make Magnificent Mods More Malleable in the Mandibles of Minecraft Manipulators!

  6. Bobtree says:

    This is a good thing, but it’s very late. It will probably take a long time for this new foundation to stabilize and then get existing infrastructure rebuilt and mods ported. Hopefully, in time, Minecraft will become a more interesting game, and mods will be easier to integrate and use.

  7. Unaco says:

    Any word on whether they’ll be charging for the API, as they announced previously? Or has that been given up for the ridiculous idea that it was?

    • LTK says:

      Modding will cost nothing. They changed their minds literally minutes after the announcement, if you hadn’t noticed.

    • Unaco says:

      That is good to hear. But, if they announced it, then changed their mind minutes later… might they not have changed their minds again?

    • Phasma Felis says:

      They actually changed their minds several thousand times over the following 15 minutes before finally settling on “no”. It was pretty cool, the news feed looked like a strobe light.

    • bear912 says:

      To be honest, I thought that particular idea was just fine, but whatever.

      As soon as they release the source code for the game, though, I’m going to set about porting the darn server to C or C++, in hopes that it’ll improve memory efficiency…

    • FriendlyFire says:

      You do realize that you could start right off? The modding kit that’s out there basically contains the source, just with semi-reversed names (many functions and variables are still obfuscated, but the code remains fairly readable).

      However, I’m not sure you grasp the scope of what you’re actually saying you want to do…

    • bear912 says:

      Yeah, I realize that semi-deobfuscated source for Minecraft is out there, but meh, digging through decompiled Java just doesn’t sound very fun to me, especially when I’m just trying to port the darn thing to another language. I’ll wait until they release the official source. Waiting for that provides me a convenient excuse for not doing so already.

      Do I understand the scope of what I’m saying? Eh, I dunno. I might get bored of it pretty quick, but I think it would be possible to get a few folks working on it, to distribute the boredom. As I said, the fact that the source hasn’t been officially released provides me with a convenient excuse to not bother while still complaining about how much more memory efficient the server could (should?) be.

      tl;dr: I like to whine about Java.

    • hello_mr.Trout says:

      @ bear912
      would having minecraft run on c or c++ actually improve performance issues? like having longer view distances, more visual effects and faster framerates? do different computer languages impact upon stuff like this?

    • jalf says:

      would having minecraft run on c or c++ actually improve performance issues? like having longer view distances, more visual effects and faster framerates? do different computer languages impact upon stuff like this?

      Yes… no… maybe.
      Ultimately, it depends on the code you write, more than which language you use, but obviously, the language can’t help affecting the code.

      C and C++ give you more *control* over memory usage for example, so a C++ rewrite could *potentially* use less memory. But it’s not a given. You can also write bad code in C++ (that’s very easy, in fact). On the other hand, it is typically easier and faster to write something in Java, which might free up more time for tweaking and optimization.

      So yes, a C++ port could potentially offer improvements (for things like draw distance, I suspect you’d have to look at the client rather than the server though). But it’s not a simple matter of “rewriting a Java app in C++ automatically makes it faster and more efficient”.

    • Llewyn says:

      @hello_mr.Trout: Languages themselves don’t influence performance at all but compilation and execution methods do, and these are often inextricably linked to the choice of language. Java is fundamentally an interpreted language – the high level code written by the programmer is compiled into low level instructions which are processed by the Java Runtime Environment (or equivalent) rather than directly by the target OS. This additional layer, which in the worst case has to translate these intermediate level instructions into platform-specific instructions on the fly on every execution, can add a significant overhead. The trade-off for this is that the intermediate level application should run on any platform which has an available Java interpreter.

      It’s theoretically possible to write a compiler which will produce executable output identical to a C++ compiler given equivalent input, leading to a Java application every bit as efficient as the C++ one. But of course that Java application would be compiled for a specific target platform; in which case, why code in Java in the first place?

    • bear912 says:

      Like others have said, performance is going to depend mostly on the programmer, not so much the language. If I’m not mistaken, actual execution speed for equivalent tasks in Java and a compiled language can be nearly identical these days (someone correct me if I’m wrong. I might be wildly delusional). Java is now much faster than it once was. In fact, there are actually a ton of disadvantages to writing the game in a compiled language like C or C++, in terms of portability, compatibility, etc.

      That said, there are some low-level differences in how you can handle memory in a language like C that can provide you with better (more dangerous!) tools for memory efficiency. For instance, if you wanted to create an array of objects in Java, you’d end up with an array of pointers (generally at 32 bits apiece) to objects, whereas in C, you could create an array that consisted of the “objects” themselves, saving 32 bits of memory for every item in the array. I realize that might sound pretty cryptic if you’re not familiar with the terms, but perhaps I or one of the other RPSers can give you further explanation if needed.

      tl;dr: Coding something in C isn’t going to magically improve your code, but it does allow you to do some interesting stuff with memory.

      Minecraft in assembly! Make it so, internet! Hardeehar!

    • hello_mr.Trout says:

      - thank you all for your very comprehensive replies! i am still trying to wrap my head around some of the ideas and technical terms tho – but it is a good platform for further research!

      i have a question though – is recoding a program from one language into another comparable to translating a book from one language to another? especially if you are making changes to the code to improve memory allocation, or even just generally writing more efficient code – something similar to how a translator would alter specific phrases or words to make the overall meaning of the text understandable in the new language.

    • bear912 says:

      That seems like a fairly apt analogy to me.

    • Dayt says:

      The main difference between Java and C/C++ is, Java is actually using a virtual machine, and C++ is using compiled native code.

      Native code, is something that your CPU will be able to understand directly. You write a program in plain text, compiling process converts that text into native code, CPU executes your program with no overhead.

      Java code doesn’t get compiled to native code. Instead it gets converted to byte code. Your CPU doesn’t understand byte code, its practically gibberish for a CPU. So Java runs this code in a Virtual Machine that can understand the byte code. This virtual machine acts as if its a computer, and runs the byte code by itself. Its almost like a computer simulation software, inside a computer. Virtual Machine itself is written in C.

      There’s a reason why Java uses a virtual machine instead of native code. Since the language complies into byte code and then gets executed inside a virtual machine, it is independent from hardware and software (operating systems), because in theory, anything that can run a virtual machine software, can also run Java code as well. Windows, Mac OS, Linux, IOS and so on, all of them has their version of the virtual machine. This allows you to write a Java program in Windows, and run that in Mac OS without any effort (in theory****).

      Native code doesn’t have this kind of portability, because when designing programs with C/C++, you end up using libraries specific to the OS you’re working on. While C family languages themselves are inherently portable (because there’s nothing specific to a machine or OS in the language), the libraries you use are not. This is why its so hard to port games to Mac or Linux. You end up having to re-write major amount of code just to make it work on another OS. To state it more clearly, if you compile your C++ code in a Windows machine, linux can’t run it and vice versa. (it doesn’t actually work like that, but proper explanation will take too long, so accept this as a fact for proper complex programs) ***I have to point out, Java sometimes also suffer from this, because libraries you use might not always be available on all platforms that is supported by Java Virtual Machine, but its not as severe as native languages, and generally, it just works.

      Manual memory allocation while reduces overall memory usage, it doesn’t actually effect performance that much. Yes, in theory you can create a perfect memory management scheme, but thats just a theory. In reality, most people just stop fiddling with it when it works OKish (hence memory leaks). In fact, most C++ programs probably has worse memory management than Java, but they’re still faster.

      So this is the gist of it. Java offers more platforms on the fly with slower performance (because of JVM) and C/C++ offers limited portability with great performance.

      Porting your program from Java to C++ will improve performance, unless you’ve made a really, really terrible mistake. Your whole outlook of the C++ has to be really distorted and your app needs to have serious bottlenecking issues (that are artificially introduced by you) to not get an overall performance improvement.

      Keep in mind I’m talking about complex systems and not synthetic benchmarks. Java is actually as fast as C++ on certain number crunching benchmarks, but it still falls short in real complex apps. You can’t really compete with native code in terms of performance when you’re running on a virtual machine. Its not going to happen.

      As an addendum, compilers and Java Virtual Machine gets new revisions every now and then and improve their performance overtime. This is why compiling a program with 10 year old compiler will produce slower results than compiling it with a modern compiler. Java doesn’t have this problem, because it works on a Virtual Machine, byte code stays the same. This means, programs written 10 years ago in Java, has actually gotten faster with years of improvements, without needing to recompile the entire program.

      As you can see, both languages have really powerful features, and very specific uses. Not everything is performance or portability. Everything has its place.

      Holy wall of text.

      TL;DR Its complicated

  8. Stuart Walton says:

    Good news indeed. The lead time between a Minecraft update and the next recommended Bukkit build isn’t much fun if you are a Minecraft server host/admin. All the players update their client without a second thought and of course they can’t join the modded servers any more.

    The Bukkit devs are thankfully very good at keeping up with the snapshots so they can keep up with the changes and avail the bukkit plugin developers with the information they require to update their plugins. Getting all those Bukkit hooks into an official release alongside vanilla Minecraft is going to save a lot of time and keep server owners and players happy..

    • Sinomatic says:

      This. The downtime between a minecraft update and the following bukkit build just seemed to take forever. It’s not so much of an issue for me, but there are people on my server who miss being able to get into our modded world.

  9. Clavus says:

    Vanilla Minecraft multiplayer is barely playable if you allow pubbers in, it turns your server into a shipwreck overnight unless you have a large team of disciplined admins. Some mods, like Factions, just force a set of rules so players can at least build, fight and thrive without feeling completely outmatched by others.

  10. MellowKrogoth says:

    Bukkit has a big user base, but I wonder if Mojang shouldn’t have gone with the more visionnary approach of the split-off Spout project. Instead of “adding single-player modding somehow”, these guys already have working mods hosted on the server that auto-download to the client, such as texture packs. It’s not as polished as Bukkit yet but shows more promise IMO.

    • Stuart Walton says:

      Minecraft 1.1 already has code to support clientmod-servermod communication using an internal messaging protocol and not a 3rd party process or modified JAR file. Which will allow it to do what Spout does, giving players stuff like GUIs that interact with server-side processes. It’s exactly what Minecraft modding needs and it will be getting full support in the official server build… eventually.

  11. Tei says:

    I hope the clientside modding its not hurt. I think theres a obvious economical incentive to make the serverside modable. Its a bussines. ISP’s sell Minecraft hosting, and the users will move from a service from another that give more stability and more “slots”… The number of “slots” can be directly afected how optimized is the server code. A whole “industry” is built on top the minecraft server.

    Being so economically important the server, I hope clientside modding is not ignored. There are singleplayer games that do things a multiplayer game can’t do. Making a game multiplayer limit what the game can do. I understand the need to make the game has more multiplayer friendly has possible, but any change sould be made so it don’t remove modding potential from the game. This its just a friendly advice.

  12. Harvey says:

    So close, and yet so far from pure alliterative genius! Couldn’t more have been done? I can’t stop thinking about how to transform the title to true… uh, damn, it IS hard

    • Harvey says:

      Ok. ok, i’ve already spent too long on this, but check it :O

      March Mojang moves may mollify modders, mean more minecraft multiplayer….

      edit: oh fiddlesticks, I forgot it’s still February

  13. ThaneSolus says:

    “John: So will this mean that Minecraft will finally properly support modding?
    Carl Manneh: Yes!”

    After all, they are responsible for more than half of profits Mojan have, since they fixed and sustained the online community for years, and had to fix every buggy update Mojang released. Without these guys, they woudnt be so many online servers with Minecraft and so many mods. I am glad that after so many years of living on their backs, they decided to talk.

    Bleah..

    • FataMorganaPseudonym says:

      I’m playing on a private server with no mods whatsoever, and I have no problems. Mods are not required to play the game.

  14. Beelzebud says:

    Nice to see them taking some of that beta money they got, and putting it towards actually getting the game finished. He can certainly afford it.

  15. po says:

    This speaks VOLUMES about what is so wrong with so much of the rest of the gaming industry.

    How it should be:

    Developers develop game.
    Developers publish, just like Mojang did.
    Developers continue to develop game.
    Players also develop game, for each other (and also, one could say, as a form of appreciation for the original developers).
    The best player/developers get recognised and possibly employed for their efforts.
    Gaming as a ‘form of art’ progresses.

    How it has become, instead, in recent years:

    Developers develop game.
    Publishers publish game.
    Developers produce expansions or DLC, without really developing anything, just recycling the original formula, because that’s what the publisher demands (having all rights to the intellectual property).
    Players pay more for less.
    Gaming goes the way of pop music, hollywood films and 99% of what you see on TV. ie. becomes complete trash.

    Quakeworld, Counterstrike, Team Fortress, Desert Combat, 3Wave Capture the Flag (foundation of most FPS CTF), AIX mod (which I ended up modding my self, for my own server).

    Those are player made DLC/expansions for published games that I have played, that while they did not have the budgets put into modern commercial DLC/expansions had considerably higher quality/more original ideas, and despite being produced by ‘amateurs’ were actually far more enjoyable than the DLC/expansions that we have come to expect these days from the huge franchised games (you could even argue that they had higher production quality, as they’d get patched sooner/more regularly).

    Minecraft truly is a thing of beauty, as it brings back the utterly modder friendly days of Quake 1.

    I would much rather see a return of player made DLC, than the continuation of payed for DLC.

    Hats off to Mojang for supporting the players.

    • Beelzebud says:

      Which is why many of us were concerned when “DLC” came on to the scene in the form of horse armor. Of course Bethesda has actually wised up, and seem to be one of the better stewards of the modding community, but the concept of DLC has pretty much killed mod support in many games.

      Publishers are too worried that people would rather download mods/maps for free, than be nickle and dimed to death over map packs.

      I wouldn’t go singing Mojang’s praises just yet though. It was only a few months ago they were openly talking about charging money for a modding API for Minecraft, by releasing it as paid DLC.

    • Stupoider says:

      They were going to charge money for licenses to use the source code, which is pretty damn reasonable considering most devs don’t let players anywhere near it.

      Then there was an uproar because people thought he was going to start charging for mods, so he ended up saying he was going to allow access to the source code for free.

      Still yet to see any of his proposed plans for that though.

    • FriendlyFire says:

      Minecraft’s in the unique predicament that they can’t stop you from getting the source, though. Java is a bytecode language, so you can reverse the source from the bytecode. You lose certain things, namely function and variable names, because they’ve done their best to make it hard to reverse, but the modding kit that people have built is essentially a packaged decompiler with automated function renaming for the major ones.

      That’s why people were up in arms; you *already* have access to the source, they wanted to charge for a license to be allowed to do what you can already do, just with some fluff added. Having the choice, I’d pick the original source, obviously (more readable, though I don’t expect comments), but if I had to pay for it? No way.

      Plus, it opened a whole can of worms. What if somebody kept releasing their mod(s) without paying for the license? Could Mojang shutter them off for it? Would they? It wasn’t their wisest move.

    • bear912 says:

      Sorry to be “that guy”, but QuakeWorld was actually an official update developed by id. It wasn’t developed by modders to my knowledge, unless you count David Kirsch, who was hired by id after his work on Threewave CTF. He was working at id the entire time he was maintaining QuakeWorld, though, I believe.

      That said, there were some darn fine mods made for QuakeWorld.

  16. DrZhark says:

    Hmmm
    I guess I’ll finally port Mo’Creatures to SMP then. (if this modding API really materializes)
    BTW I’ve never said this, the reason I started playing Minecraft was because of RPS. I read an article here one night and the minecraft bug bit me.

    • vivlo says:

      Mo’Creatures in SMP…… :))
      (btw thank you, and thank you rps)

  17. vivlo says:

    Mo’Creatures in SMP…… :))