Minecraft modding, then and now

tl;dr: Potentially upcoming crapfest & drama for MC modding! Whooo.

Added 12/16: Last paragraph

I started making mods not long after the SMP server mod “hMod” came out around September 2010. Before hMod, you had either regular hard-coded mods similar to how you have it on single player or simplistic “server wrappers” that didn’t let you do much to the game itself. hMod was different: it was the first time that you could write “plugins” for the server so that you could easily extend it, and because your plugin would mostly access hMod’s code, you wouldn’t have to update your plugin so much whenever Minecraft got updated. With this fantastic new development, I made WorldEdit, WorldGuard, CraftBook, and CommandHelper over the last quarter of the year. Unfortunately, not only was hMod on shaky legal ground, the code was a complete mess. If you wanted to adjust an event and add new features to it, you’d single-handedly break all the plugins that used that event. I felt uneasy about hMod’s future and wrote WorldEdit and WorldGuard in a way where I could easily port it to some new mod in case hMod died.

Well die it did. Only a few months later, towards the end of December 2010, a few guys secretly started up a project called Bukkit as a replacement. It was to borrow its predecessor’s best ideas while fixing its worst faults. The community for hMod was sizable, and Bukkit needed momentum in order to get adopted, especially as most server owners wouldn’t want to completely dump everything to switch to something completely brand new. With that transition, for better or worse, I helped by declaring that all future releases of my plugins would only be for Bukkit. As my plugins were pretty popular (least to say), especially CraftBook, that pretty much put the nail in the coffin for hMod and gave Bukkit life. I had good reasons to back my decision, however. The author of hMod had completely become unreachable for several weeks, and while Minecraft was still getting updated with new versions, no one left had the ability to post new versions of hMod. That wasn’t good, and it was put the future of hMod in deep question. Giving Bukkit a chance seemed like the best idea. This was around the beginning of January 2011.

I was enthusiastic about Bukkit at the time, and I got WorldEdit and WorldGuard ported pretty quickly (CraftBook wasn’t written to be ported easily, and those who are familiar with CraftBook are probably familiar with its fate). I helped Bukkit by designing the permissions system that everyone uses (with.the.nodes), as well by writing the original configuration classes and vehicle events. For the first month or so, things were rosy, but the frequency of commits to my own projects had started to fall sharply. While I was definitely busier that part of the year, the magic had faded away, and my hope that Bukkit would be the bastion of extensibility had disappeared. While there were technical issues to blame for that, there were also (and arguable still are) very strong opinions among the core team’s members about what people should be able to do and what they shouldn’t be able to do. Politics became an important fact of life suddenly. My frequency of commits to Bukkit fell even sharper. A few months later, unsurprisingly, someone started writing a mod to Bukkit itself to allow you to do things that Bukkit wouldn’t let you do. It was originally named BukkitDev, but later it changed its name to Spout. The community also changed. Everything had become cutthroat, and everyone wanted to be famous and popular (or small-time rich, as the case may be). People would write plugins to do exactly the same thing as another person’s plugins, and often times these copy-cats would even be inferior. I wouldn’t be surprised if 50% of the Bukkit plugins available right now solely exist to block fire and TNT usage.

Throughout this time, While Notch has been fairly indecisive on several occasions, he did have an opinion that Mojang shouldn’t give any preference to any particular user-made mod, and never really endorsed Bukkit, hMod, or anything else. Bukkit entered in discussions with Mojang in early 2011 in hope that Mojang would embrace Bukkit with official support, but these exchanges did not progress at all. This impartiality was a good thing, but it had its downsides. There was always some fragmentation in the community – not everything was happy with what Bukkit did, and others were definitely not a fan of the person who led Bukkit. Canary was born out of hMod as its direct successor (sometime in early 2011), with several original hMod fans as a part of the team, but it never gained traction against Bukkit. I personally never ported any of my mods to Canary after that split happened (mostly due to a matter of time constraints). However, while Canary had really little traction, it always had the chance at becoming the top server mod through hard work and ingenuity, largely due to Notch’s impartiality.

Sometime earlier this year though, Bukkit gained a corporate partner: Curse.com. They’d host the website and also fund the project, but Curse.com also was the owner of the Minecraft forums, which they had purchased previously from a bunch of Minecraft fans who started it a long time back. This obviously gave them an enormous amount of power to move the community in certain directions, and with them behind Bukkit, that meant that Bukkit had resources that no other project could dream of (recently Bukkit got front page attention on the Minecraft forums with a video that reeked favoritism for the server, surprise, that Bukkit’s project leader is an administrator on). About this time, I had started to scale back my contributions to Minecraft, as I figure I’d be in for more doom and gloom again. Those who watched me on GitHub closely may have noticed that my contributions to my own plugins and completely evaporated since summer of this year and I’ve been thankful to all the other people who have picked up the slack.

The news now is that, with Notch having moved on and jeb having taken the reins of the project, Bukkit will be responsible for the client modding API. I can’t confirm that particular fact (I’ve been pretty disconnected for the past few months), but I’ve heard that a lot of modders are not happy. Notch is no longer the lead for Minecraft, and so it would not be unreasonable for this decision to have been made. The problem that some modders have with this is that Bukkit has been exceptionally limiting (especially evident by the need for BukkitDev/Spout) and so a number of modders fear that they won’t be able to do all the great and cool mods used to be able to do. The opinions of the core Bukkit team have always been strong in allowing some mods and disallowing others. If this is so, the multiplayer and single player modding communities will finally merge in an official capacity.

When you’ve got two sides with grossly different opinions, there’s a minor chance that the community will fragment. I’ve heard wind of a few plans from various people myself, and we may have a modding community split brewing for the future. If that does happen, it’d be interesting as to whether the other side would be able to muster the clout, as Mojang will control the client and the forums will not be in impartial hands. As for me, I have to say that I have enjoyed Minecraft a lot, a lot more than any other game that I have played. Notch and the Mojang team have done a great job at making such a fantastic game, and I’ve met a lot of great and creative people throughout my time in the community. I’m not disappearing by any means, and I’ll probably be popping in still to manage my plugins, but I’m officially going to watch things settle down, hopefully this time for good, whenever that may be.

I’m not advocating for any option here. I’ve tried to keep politics away from my contributions, as most of us here, including myself, are here to have fun. However, if anyone wanted to see a server-client modding framework that has worked especially well though, you only need to look to the fabulous work in Garry’s Mod. Servers can (safely) send entirely self-contained client mods (written in Lua) to connecting players, which would work wonderfully in tandem with mods on the server. There are completely brand new gamemodes on plenty of servers. Minecraft modding, on the other hand, has been grossly inferior – full of politics and filled with the great rise and fall of many mods.

On another note, I actually worked on a server-client modding framework with lahwran and some other folk many months back (we even registered a domain name in June 2011). The idea was that servers would be able to send client mods to clients, and these mods would access a completely abstracted sandbox API. However, when that failed, it was still possible to also load separate client .class mods (not auto-downloaded, however), so you’d basically have the best of both worlds. Single player mods could also be written under the API. The main issues of the time were that Java is exceptionally un-dynamic, so giving mods the expressive power they needed was difficult. Sandboxing was a difficult matter, and we weren’t even sure if we should let mods access OpenGL, as there are already webpages that can crash your graphics drivers, simply because they have limited access to OpenGL (though no worse exploits exist, as far as I know). A lot of code and planning got done, but we abandoned it because of both time constraints and the uphill climb that we were facing to achieve adoption (it would require both server and client interaction)


24 Responses to Minecraft modding, then and now

  1. i cannot read this


  2. Great article. I must agree that I see a lot of people just wanting the same mods (but under their own label) and I must admit that I too am sadly part of this.

    I too have always been puzzled why server mods can’t be pushed to a player without them downloading the plugin / mod themselves. It’s so backwards. I’m very curious to see where this will be heading.


  3. I feel the exact same way, im sorry to see things go in the direction they have again and again, and would love to see a TRUE EXTENSIBLE server wrapper that can allow the sorts of mods the COMMUNITY wants and not what bukkit (evilsteph?) will allow…


  4. P.S. the ONLY reason i moved from hMod to bukkit is because of WorldEdit/WorldGuard/ and ESP CraftBook (i miss craftbook….)


  5. I find that garrys mod does have a way better mod api and system then minecraft. I also think that modloader got a good idea of only have to drop it in a mods folder like you do with garrys mod and its addons folder. Maybe if that could come to a server side we would be alot better


  6. I started with Vanilla and then Bukkit because of FWCoreys insistent torment and nagging to install WorldEdit and craft book. and after Obliterating out first world… I did not look back, in fact I WENT Back thanks to the these tools I pulled all of our old stuff from multiple backups, retrieving 95% of our build. Now where to place it?
    Then you hooked me up with the Spawn in mob dungeon seed, Thanks buddy! come visit our server! smpminecraft.net and leave the diamond tears at home! XD look forward to seeing ya!.


  7. I recently came across Spout and it gave me a lot of hope for its future when I read that they want to move in the direction of Garry’s Mod. I’d keep an eye out for where they’re headed.


  8. We already have splits. A major one, between the ModloaderMP devs/Minecraftforum and the Spout Devs/Bukkit Forums. Then you have splits within the community that uses the MCForge modding API. Never underestimate the ego of a person intelligent enough to write code.

    -Aox


    • While that’s definitely a split, they grew pretty organically. They both got their start from vastly different reasons and eventually came to the same destination.


  9. I am not a genius on the matters that this speaks of, but wouldn’t Mojang making the Mod API they promised a long time ago fix a lot of this? And if they merged SSP and SMP too?


    • The modding API Mojang promised was originally not an API at all. It was access to the source code. They flip flopped on this decision quite a few times (not publicly) and eventually decided to abandon the idea.

      Now we will have an API, but it will be a 3rd-party API.


  10. >When you’ve got two sides with grossly different opinions, there’s a minor chance that the community will fragment

    Welp, this has already happened.

    From our repository short description:

    “Spout is an open-source implementation of the Minecraft server software written in Java, originally forked from the Glowstone project.”


    • Well there always have been things such as custom servers and the like. None of them have gotten very far though; it’s this time that I chose to bring this issue up because I feel as if now there are credible threats.


  11. Good post. I really enjoy it. I don’t follow Minecraft and the community very closely, but I try to. I’ve made few simple plugins in the past (and others that I even not uploaded), but ’cause of lack of time, I didn’t maintain them. I know that there is a division between the different existing mods and API, but I never really notice that Bukkit was limiting the possibility of the API on purpose.

    Since I never notice the imposed limitation, I always thought and hoped that Bukkit will extend itself to the client side. If Bukkit is chosen as the 3rd-party API, do you think that they will made a Bukkit client mod ? Also, do you think that this mod will be able to auto-download plugins as you describe with the Garry’s Mod ? Finally, do you think they will stop limiting the API if Bukkit is chosen as the 3rd-party API by Mojang ?


    • I can’t really speak on any specifics. We can only hope that things turn out well (in technical ways) like in Garry’s Mod. Garry’s Mod has the advantage that its mods are written in Lua though, which is far more dynamic than Java.


    • 1. packet listeners were rejected many many times
      2. even simple raw packet sending was rejected

      both for the reason that bukkit does not want to tie itself to the minecraft protocol (although only plugins that use these features would tie themselves to that protocol, not Bukkit itself)

      3. sk89q added dynamic command registration and Grum removed it

      The only reason I’ve heard from him so far was “Because this is *NOT* how it should be.”

      And these 3 are only the examples I’d wanted to see in Bukkit…


  12. I’ve stuck with your mods since hMod, and I fondly remember the buggy early releases.

    The issue here is Curse and the politics of the forums. In my opinion, Bukkit was at it’s peak in Summer, before Curse started BukkitDev and the forum drama started to peak. Remember Drakia? The author of Stargate, iChat and Warpz0r? His plugins were wildly popular, and he disagreed with BukkitDev, leading to his BAN from the Bukkit community, all because he was vocal about his dislike of BukkitDev. BukkitDev is a crapshoot. It’s limited, controlled by Curse, etc. You can’t offer offsite downloads, Curse needs to do that. Right now, to get/search for plugins there’s the forums, plugins search, BukkitDev plugins search, and BukkitDev itself. It’s kind of fragmented. What was wrong with the forums/plugin search method? It worked great, authors had a lot of freedom in formatting and content, and the review process worked well. Now, we’re left with a moderated Curse-owned limited solution in the forum on BukkitDev. Thanks to Curse, the Bukkit community is extremely limited in enhancing BukkitDev. Feature changes are forbidden, bugfixes take weeks to implement, and the entire system is a complete piece of crap.

    More and more good authors have been reducing their contributions towards Bukkit. It’s starting to feel as bloated as hMod, and as drama-stricken as the Minecraft Forums. I think a new split is a good idea, as it’ll free a lot of people from the current chains holding them back from innovating further.

    Bukkit also is just a total mess now. The front page blog is rarely updated, the project management is messed up, and it’s backed by a company whose plans are contrary to the open source and free nature of Bukkit. An independent project has a lot of freedom to do as they please, but now we’re back at the start, chained to Curse and their policies. The entire system is broken, and nobody in the administration cares.

    I think it’s high time that the community, as a whole, reevaluates their current standing. Right now, Curse has their corporate fingers in the forums, the server modding, and soon the client modding. Their goal is to make money. The original goal of the Minecraft communities was to create a place for innovation and creativity. All of a sudden, Curse has their fingers in everything they can. Interesting, isn’t it? As a longtime server owner and operator, I’ve seen the drama over the past year, and it’s just getting worse.

    While I’m on the topic, I’d also like to say a few things about the implementation of Bukkit’s permissions. Permissions v3 was a mature, stable, well-supported platform. It made sense, it was easy to configure, it was modular, and it lasted for months and months, across countless Bukkit builds and multiple project devs. Why again is PermissionsBukkit or SuperPerms better? I feel like it, as a whole, ended up being a downgrade, not a upgrade. In my opinion, the best system was the system in Permissions v3 — there was no need to change it.

    Anyways, I’m just a little pissed at the direction this game has taken. Curse and Bukkit’s politics have been destroying the community from the inside out.


    • Having been sitting in the bleachers watching the drama unfold with a bowl of popcorn in my lap I can assure you that many of your facts are wrong even though I agree with your conclusion. I agree with Bukkit that the ban was not the result of disagreement, but how it was done. Being popular should not give permission to be a jerk in the community (this goes all ways). Also, as a plugin developer, Permissions 3 was a mess. There were a number of competing systems and plugin devs have to support all of them. Now it is a simple player.hasPermission(“permission.node”) in the code. How the server admin sets it up is totally up to their needs.


  13. The future of server modding looks bleak indeed.


  14. Justin The Cynical

    I must say that I am glad that I am not the only one who feels that the Bukkit team has ‘sold their soul’ to curse.

    Dev bukkit is a mess IMO and should have never been forced down the communities collective throats, which is what has happened.

    Now what we have is a community that is being forced to use a system that is broken in many ways (Cue the “We’ll be phasing out the Plugin Submissions system and everything associated with it” message at the top of every forum page), a team that squashes any public discussion of trying to start a non-curse controlled bukkit community (I have screenshots as proof of active censorship on this point), developers who are still questioning the TOS of curse and who owns the code after how long since it was introduced, and a site admin team that is divided internally over the move (search the forums, there are more than a few with a community badge that have disavowed any involvement with the decision and expressed their misgivings over it).

    It’s a sad state of affairs. I love what bukkit allows me to do with my server, I don’t love how the team seems to have been bought by a company that only seems to see it as a way to make money.

    OK, this seemed to be a longer post than I originally intended, my apologies for that. I’ll just leave this here:
    http://forums.bukkit.org/threads/introducing-bukkitdev-a-new-service-by-bukkit-and-curse.33474/page-3#post-617166


  15. Well sk89q,
    I have to apologize. I thought you bailed on modding altogether and left people out to dry. Dont be insulted… Your such a pivotal part of the community that I mean it as a complement. Your plugins are important to so many servers.

    I see now you carry the same opinion I do. Only I bluntly say, bukkit doesn’t do enough and they are slacking. But I cant come down on them for that.

    The biggest offender in all this is Mojang. I assume you know what happened behind the scenes there, but they put way too much trust that Notch could do all the things he planned on doing. Hes not a project manager and they should have realized that when he was missing is first few deadlines. He is a creative person and programer.

    Their second biggest mistake was not taking the bull by the horns and taking the lead on client pushing capabilities. Spout has done wonders and I look forward to their new Server and Client mods that let you do what you describe. I only hope we get closer to GMod like environments for Minecraft quickly. Thanks for what you’ve done. I hope you feel confident in the directions being taken soon. As a server owner, I can say, we are looking forward to getting back into it.

    BTW, What do you think of a mod for GMod that can let you play on Minecraft servers? Is there a future for it? Would be a big releaf to my CPU. :)
    Cheers,
    MachetePanda


    • It’s doable. Minecraft itself has been remade in Garry’s Mod, so presumably it’s not too far fetched to have Garry’s Mod login to a real Minecraft server.

      It’s a lot of work though, and I don’t know if there’s really demand for it.


      • Well that is encouraging. I agree there is little to no demand.

        But I suspect that as these new GUI and mod receiving clients come out, the demand for something that will not be java intense and use the clients graphics card will increase.

        If you want to use the HD client mods java can already barely handle that on most PCs. The Minecraft future is full of possibilities, but as you mention, on shaky ground. As ‘nitch’ servers that push to clients come out, Mojang could see disappointed new users when they try to log in and see only a couple servers available. It really could turn Minecraft into a cult classic and kill and further progression by Mojang. Yeah, they really need to guide the community on this as much as they dont want to.


  16. Really like your post

    One thing that bugged me wasn’t Spout used to be called BukkitContrib (BukkitDev being the repo/project management site hosted by curse)

    The problem here is the Corporation that is Curse creating jelosy and tention in the comunity. That and the Bukkit team themselfs basking in their own glory (at minecon etc) and creating mini – them’s with the “copycats” wanting some fame.

    SPOUT ALL THE WAY* :D

    * as long as afforess ,top_cat and the other’s don’t go the way of the Bukkit Team. Keep up the good work and keep it grass-roots


Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>