• 64

    posted a message on The secret history of Minecraft. (with proof)

    I'm JTE. I joined Minecraft around nearly the beginning, way back in the Summer of 2009, when Glass Blocks and Sponges were newly implemented and the only server mods for Minecraft were simple Batch file wrappers which would read the server's text output and input bans. It's been five years since then, so please forgive me if the details of this document are a little off, or missing.

    With all this eula drama blowing my way, I don't know, I guess I feel the need to write my story down so I can let go of it. I don't expect to get much attention, I'm just here to get my thoughts out.

    So let me tell you about Minecraft.

    Vanilla pre-Classic

    Hosting a vanilla server for Minecraft was some form of Hell. There was a giant list of all public servers which anyone could use to join, absolutely no form of hack detection/prevention, no automatic map backups, and all free accounts could join and grief the extremely limited area of your map to death at any time. The most basic of gameplay building blocks were there, but that was it.

    In order to manage it properly, I had to build a convoluted player trap out of bedrock I called the "frying pan" just so I could keep people from wandering off to destroy things before I got the chance to fly over and keep an eye on them. This was actually common practice at the time, and served essentially the same function as whitelisted servers.

    Frying pan

    One of the flaws of Minecraft at this point was that if a player were to walk one block away, place two blocks down where they spawned, and then hit the respawn button, it would spawn them on top of wherever they were, allowing them to break out and escape. So I had a hive of one-block-wide spaces built on top of the 'frying pan' where players who tried to break out without asking nicely would wind up trapped, essentially putting them out of the frying pan and into the fire.

    The dawn of mods

    Being the tinkerer I am, and knowing that indie games like to keep things nice and simple, I soon created an intermediary server Perl script, to act as a proxy between my client and my server, and set to work figuring out all of the messages passed back and forth between them. My proxy server was quickly able to perform simple modifications, such as reading slash commands (including /me), spawning idle player dummies all around the map, or allowing the placement of coal and gold ores, and even liquids.

    Zombies!

    So now we could not only build with blocks, but we could build little blockmobiles on our roads and then sit actual player characters inside them. Neat. But there was more to be done!

    Using the proxy server, and with help from another early modder's research, I eventually compiled documentation of the complete networking protocol now publicly available for Minecraft Classic servers. Armed with this private research, and over the course of 26 sleepless hours, I turned my Perl script into a fully fledged Minecraft server, which could generate maps, accept any number of clients, automatically detect hackers, allow the in-place painting of blocks (and other creative tools), build trees by placing a single block (before saplings had function), and even produce custom water and lava block 'physics'. I was even able to, astonishingly enough, trick clients into re-downloading the map from the server, and therefore could host multiple maps on a single server or reload maps from the last backup on the fly. (Now we could play Spleef without having to rebuild!)

    All without looking at, modifying, or compromosing any of Notch's code. Notch agreed that my server software is entirely my own creation, and I am free to do with it anything that I please.

    On the forums, these very forums before they were handed over to Curse, I was heralded as the "Minecraft Hacking God" for a day or two. All of my changes were big improvements to the core function and gameplay of Minecraft itself. Even the fact that I built in a safety switch to prevent the flood of lava covering the entire server from making the server eventually freeze over near-indefinitely from the exponential growth of 'thinking' blocks was a big thing. Notch himself came to my server from IRC and flooded it with lava just to ascertain exactly how well it handles. (Answer: Not particularly well, but at least it didn't die completely and admins were still able to simply reload the map without disconnecting anyone, right?)

    Lava leak
    ( thread )

    Back then, Notch arbitrarily had a golden name hanging over his head, being a VIP and all. I was jealous, so I invented colored names for different tiers of server moderators / administrators, the server owner (me) being colored Red (my favorite color), just so I can feel special. (The reality was that admins of my server could set their name to literally anything, at any time, on the fly, color code spam and all.) If you were ever on a Minecraft server and the server admins have red names -- I started that. Notch even went and specifically made the skin-grabbing code strip colorcodes out so that it would still show the correct skin despite having a colorful nametag in the next version.

    Leaving the forum

    And then I announced that I planned to add fancy new game modes to my server, so you could play a giant boardgame of Battleship with Minecraft blocks for pieces, or Zombie Tag versus like mods of other games do, and so on. The moderator Zuriki didn't like that idea, and immediately did a 180, revoking my custom forum title, and even threatening to ban me from the forums entirely should my server software ever be released there (for free and open-source or otherwise). After a lengthy and childish argument, wherein Zuriki claimed I would be "stealing money from Notch", and when finding my server software was 'production ready', I simply packed up my topic and left, dropping only my email address for anyone to contact me if they want it.

    Here's where my story gets muddled, people thinking that I was fighting with Notch directly despite Notch previously stating outright that I am free to do anything I like with my server software in the first place. So I made use of that and started privately selling my server software to individual buyers for around $10 each, entirely by email, advertised solely by word of mouth. I only made around 14 sales out of that, before my server started spreading like wildfire, as each server admin shared the source code with their friends to try and program new features into it together, and those people freely shared it with more people, and so on until the market was entirely saturated. I did of course use the first bit of money to pay for my Minecraft account (which at the time, offered no benefits other than a custom skin) and the rest went to a couple Steam games and buying three more Minecraft accounts for my friends. This was the first and only time I've ever been paid for anything I programmed.

    Anyway, among all of this open source server sharing (after all, it would be difficult and pointless to make a Perl script closed-source), all sorts of new game modes and life cropped up. Lava survival servers, floating water stairway challenges, I was quickly changing the very community itself by allowing the first real modding to take place. JTE servers were the best. And soon it was being replicated in other languages like Python, the same tools I pioneered becoming further expanded on with spout blocks, finite water systems, and the ability for players to cross between the server's maps individually. Now everyone could have their own sandbox to play in, and challenge packs could contain multiple "levels"...

    Survival Test, indev, infdev, and Alpha

    Meanwhile, Minecraft had been progressing seperately, having destroyed its basic multiplayer (and probably most of its engine) to introduce NPC creatures, zombies, pigs, and so on. With the account that I purchased, I was able to follow it all, every step of the way, from the beginning, and just sort of watch how it progressed. Since there was no networking in these versions, I didn't have much work to do, and just sort of kept my silence. Seeing Notch struggle with some of this, I offered to let me help him with programming, but he turned me down, saying he needed Minecraft to "get his name out there" first. He said that maybe he'll let me work with him on his next game, after Minecraft. (Then he went and hired someone else to be a 3D model artist, and then finally established the entire company Mojang around the success and continued development of Minecraft..)

    When crafting was introduced, I made the first full recipe list graphical crafting page on my website at the time, EchidnaTribe.org
    By using in-game sprites and GUI elements entirely ripped from screenshots with basic image editing software, I was able to show not only how to build every tool, but even which mobs drop what resources and how to smelt for iron. At the very bottom of the list, as a sort of in-joke, since Notch had recently removed the test Apple item from existance, I put that you need to kill Notch in order to get apples. Then right next to it, since apples still needed a use, I put that if you surround an apple with gold ingots (not blocks) you would get a golden apple.

    I invented the Golden Apple, guys. (Proof, scroll down to the bottom of the page under the ??? section.)

    When Secret Friday Updates rolled around, Notch loved randomly implimenting "community rumors" as actual features of the game to tease and delight everyone, based on what he heard secondhand. This is how pig saddles came to be, among other things, and to this day if you look in the source code you can see that any player named Notch will have a random chance of dropping apples, even if he had none in his inventory.

    SMP

    Finally, when the multiplayer mode of Alpha came out, long after scrapping nearly everything of the engine and remaking it for infinitely large worlds (a move I always felt was tremendously unnecessary and poorly implimented), it was full of bugs and problems, and split the entire community in half at the price-point, now allowing paid accounts for full servers that free accounts could no longer access. Time once again for JTE to come out and introduce things like persistent inventories and time of day locks and alternate map generators and whatnot, right? Well, not quite...

    At this point, Notch kept changing up the network protocol faster than I could descipher it on my own, and this time I didn't have a random stranger leap out at me and hand me a half-finished document I could just fill in the blanks for or anything. With every new version, the client would just start crashing blatantly from the messages my server sent, and eventually I just gave up trying. Nowadays there's even full-on SSL-like encryption going on in Minecraft's networking, not just the hassle of HTTP logins to deal with.

    I still have it sitting on my harddrive -- the half-finished OmniServer meant to bridge the gap between all Minecraft versions, be they Classic, Alpha SMP, or a new custom client written from scratch, with its finitely sized Classic-mode maps and day-lock in Alpha and infinitely-large segmented maps implimented in Classic, made to host all kinds of creative new arcade-like NPC-driven minigames I have a design document of, sitting forever in stasis now... It's a shame that never came to pass.

    Present

    I'm sure you all know what happened next. Modders started de-obfuscating the client and server's source code and making amazing new add-on packages of blocks and game mechanics, directly implimented into the server and/or client, basically all hell broke loose and the community stance on modding had shifted entirely from where it was when I introduced my little server way back when. Even before Alpha SMP was out, people were modding the Survival Test client to connect to Classic servers and spawn client-side zombies anyway.

    So now we have an army of deobfuscaters, coders, and inter-dependant modders all keeping up with an endless update treadmill, because Notch never made a proper modding system for Minecraft and continued to re-obfuscate every single build because it's not a free open-source software and never has been. The community has long outgrown me, as well as the morality that drives me. In fact, the community outgrew Notch, and now it's threatening to try and overthrow Mojang as well.

    Such is the modding momentum we have built from that point long ago. It all started with one awesome wandering programmer's tiny server script.

    Resources:
    The original JTE server distribution files, untouched since 2009 (and probably no longer functional)
    The proxy tool I wrote and used to figure out the network protocol, including the original output logs.
    more pre-alpha screenshots

    Additional reading:
    "How Blocktopia Started", history of TheOne's JTE server.
    The original "JTE's 100% Custom from-scratch Minecraft Server" thread. Ancient drama, immature mannerisms, and all.
    JTE's Custom Spleef Server thread, the dumbed-down and closed-source release of the server software set up for a specific limited purpose.

    Posted in: Discussion
  • 1

    posted a message on The secret history of Minecraft. (with proof)
    The reason why screenshots were so uncommon is because there was no screenshot button back then. It was Print Screen and MSPaint all the way.

    A real man (or woman) with significant accomplishments is not self-congratulatory because significant accomplishments are selfless in nature. Moreover, these kind of people don't even have time to brag because they're constantly working to improve things non-stop.

    I actually have to disagree with this sentiment in afterthought (many hours of programming and development later with it sitting in the back of my mind...), because it actually doesn't apply to indie game devs at all. We are actually some of the most selfish people as developers, because we generally make the game that we want to play, not what the community expects or wants. :) A self-rewarding labor of love is most assuredly not in itself selfless by nature.

    In fact, why did Notch make Minecraft in the first place? Because he wanted to be known as an indie dev of reasonable quality. (Not even expecting it to explode into something too big for him to handle, just something modest to get started with, you know?) His dream was to sit down, make something simple that he personally found fun, and then go make something else that was fun. By his own standards, for himself.

    The community of Minecraft at the time did not want to hear from anyone other than Notch. In I waltzed, out of nowhere, with a feature-rich alternative server, and what was the response? "Don't post it or I'll ban you for stealing money from Notch." But I kept working on it for a bit anyway. A significant accomplishment, and entirely selfish, because I personally wanted a server that could provide basic services, administrative and otherwise.

    We are selfish people.
    (And programmers in particular tend to be quite eccentric little puzzle-solvers.)

    Time to brag is a different issue entirely. Notch certainly had time to make a miniature rollercoaster out of minecart tracks and show it off before releasing it. Was that strictly "improving things"? No, it was adding things, and then 'bragging' about it to build hype. On his blog, where he had time to write out every thought he had, every feature he was working on, and get plenty of general reactions. On what strict schedule are we that we don't have time to brag? Even Nintendo's Smash Bros. games are built entirely on Sakurai's teases and bragging about every little thing his team does (and every character he licenses) nowadays, and the hypemachine it makes is glorious. Raising public awareness that you exist and are amazing is half the business here.

    The only way to be 'too busy' working is to completely turn a blind eye to everything that is said about you in return. So yeah, when I drop off the face of the planet for months/years at a time, it's because I stopped sitting around talking about how great I am and how great everything I'm doing is, and started actually doing it. :P Everyone works at their own pace, and not every little idea comes to full fruition.
    Posted in: Discussion
  • 1

    posted a message on ChickenBones Mods
    Yeeeah, Core 0.9.0.9 is very broken right now... :( Please fix, I'm a dumb and lost my copy of 0.9.0.8
    Posted in: Minecraft Mods
  • 1

    posted a message on JTE's 100% Custom from-scratch Minecraft Server
    My server is up and running at http://www.minecraft.net/play.jsp?server=530ae5b55ff0a56c21fc24e1f3140d7

    ... That is all.
    Posted in: Mods Discussion
  • To post a comment, please or register a new account.