Learn Java first

Browse Portfolio

I know a lot of the people reading this blog post are considered “Bukkit” or “Spigot” developers. I’m not here to ruin your illusion of being a dying cube game developer, but I will try to dismantle why this isn’t an actual thing you can expect to be and/or earn a living of.

WT* is Bukkit?

First of all, being a Bukkit developer doesn’t mean anything when it’s written in a CV (Curriculum Vitae). Developer seekers have no idea what Bukkit is, and if they search for it in Google, the first result they will probably find it’s a crappy inactive XenForo page with a “Minecrafty” style logo. This page doesn’t explain anything about what Bukkit is (a simple word such as “framework” should do the job), what programming language it is written in, or the level of programming experience needed to use it. Bukkit it’s simply an API!

What the Bukkit page looks like... (crap)
What the Bukkit page looks like... (crap)

Face it, Minecraft is dying

Minecraft it’s constantly releasing updates every year (most big game companies release at least two or three updates during the year), but the amount of features contained in them it’s constantly decreasing mainly because they are running out of ideas. They could hear the community (I’ve seen a lot of cool ideas in Reddit), but Mojang is focusing in other versions of the game (mainly consoles and PE) and on their overpriced multiplayer system called Realms because they are more profitable.

If you don’t believe me (there’s always that guy), here is an official Google Trends graph showing the interest for the word “Minecraft” over the last 4 years:

There’s no need to continue this discussion: I could be talking for hours and hours about the EULA and how it killed server profit, the Bukkit project being DMCA’d taken down by one of the original creators, the announcement of an official Mod API almost 3 years ago, the broken combat system, how all the servers are running four different game versions (which one of those is almost 4 years old now) to get players…

The usual way

Most Bukkit developers started coding by following other Youtubers or unofficial tutorials on how to start. Almost all the people you will find in Spigot (the biggest plugin community of Minecraft right now) will recommend you learning Java first. But Youtube it’s much bigger, and most people are still going this way in 2016. This way of learning doesn’t work because we have all seen cases of “developers” that showed how they didn’t followed any language conventions at all (There’s even a cool recopilation of them) and overall, failed at explained basic language features such as why a plugin needs to extends JavaPlugin to work.

Successful developers started coding with a “primitive” language such as C and things today are much simpler with Python, Java, [insert language name here]… The thing is these new languages are so easy to learn and to code in that most people jump straight to code using APIs (see the case of JavaScript frameworks) instead of learning how variables are stored in RAM, bit shifting operations…

Minecraft Developers are under-priced

Network owners get surprised if you tell them the budget for a complex plugin is over 20€. They really need to open their eyes and see how small companies are willing to pay thousands of bucks for a nice and clean simple website that requires the same amount of work if you have the same experience in both programming fields.

I will try to show you with one example I can relate to: I worked for almost a year in a Minecraft network (most of you know which one I’m talking about) that made numbers with 4 digits every month. I didn’t get payed anything for being working there (I believe the current developers don’t either) while Youtubers were benefiting of all that crap ton of money by simply making a 3 minutes-long video. I know it’s hard to make people join your server without those youtubers, but when these coders in your Minecraft network will become 18 years, they will begin to seek more delicious offers because they need to earn a living leaving your server with a codebase you don’t (and almost anybody) understand causing a substantial money loss by hiring someone that knows what he’s doing.

Some of you will tell me that this is a hobby, not a job, but you are still investing a lot of time (the only resource in the World that you can’t get back) in doing so by working for someone you’ve never seen in real life for free. You can call this whatever you want, but there’s a real term for it that I won’t post here to not offend anybody.

I got to a point where programming was becoming boring because I didn’t see any benefit in doing so, and we all need some incentive and motivation, but that’s a story for another day.

A game! :video_game:

If you consider yourself as a Bukkit developer, please try to answer these questions without looking them up in Wikipedia:

  • What’s the difference between extends and implements as different inheritance concepts in Java?
  • Why is the limit of an 32-bit integer 2,147,483,647 and 9,223,372,036,854,775,807 for a 64-bit signed integer?
  • Do you know what ^, & (not two of them, just one) and | operators do?
  • Why Bukkit needs to know where’s your main Java class in a plugin.yml file?
  • Let’s end with an easy one; what’s the difference of a float and a double?

Well, if you have made it, good job! If not, you just have to keep trying and try to learn Java as a language and do your own implementations from the ground up instead of using an API that does the dirty job for you. You just need to get out of this awful habit before it gets worse. I know you like to code and see your abilities in your favourite game (you will eventually use advanced math concepts to create cool particle auras in your plugins), but you can’t start building a castle from the top.

That’s all, folks!

I just wanted to focus only in Bukkit in this post because this is one of the largest concerns in Minecraft-related development sites that I continue to see even after I left this community over 6 months ago; but as I need to show you real life examples of why this doesn’t work, I compared it with other programming mistakes we have all made at some point in our geeky lives. :space_invader:

This is just my opinion gathered from reading over 50 requests of Minecraft-development related offers, thousands of Spigot posts asking for help with Java (that had nothing to do with Spigot) and how youtubers are earning more for doing a one-time job over countless hours of work between thousands of green lines of code. You don’t need to follow them, but it has being proven that you will end coding (by being bored and overstressed) if you keep doing it “your way”.

If you feel something I said is wrong, please, don’t hesitate to contact me! I’m willing to have a nice conversation with you :smile:

Hugo :wink:


Have a question about this post, my projects or anything else?
Ask away on Twitter