Bukkit 1.8 dev diary

So I woke up Thursday morning to a strange surprise. I had a few tweets saying "good luck with 1.8" and suddenly many more "when is 1.8 gonna be updated lol" than I usually had. What a curious thing!

Unfortunately, sleepy me didn't realise what this meant at this point in time, and was unaware that he was better off just staying in bed all day, so he decided to go investigate. Some time later, it hit me. Like a wall full of irc highlights. Mojang released 1.8 much earlier than we thought they would. Uhoh!

IRC update checker bot

It appeared that I was a couple of hours late, so I thought, maybe it's ok and we've already started to work on it. But checking our repos and irc channels... it seems I was the only one who was available to handle it. It was just a bad time for all of us. The best part about our team is also the worst part; we're each in a separate timezone so there's always one of us awake for the major hours, but times like this it's just not possible for anyone else.

What's a bone supposed to do, but update the server by himself? First things first, though, is to tell everyone DON'T PANIC and that I'm working on it. Done! That wasn't so hard. Things might be easier than I expected!

So, to the actual updating. We have a top-secret-ultra-sensitive-really-hackish 3 step process of handling updates. Four, if you count the pizza time afterwards. The first two steps are essentially deobfuscation, and the third is almost rewriting the entirety of Craftbukkits net.minecraft.server section. That's a whole lotta code. We have some very fancy tools written by ourselves for assisting during this, but it's mostly manual hard work all around.

This time, though, something odd happened. 1.8 broke our tools. Fortunately we anticipated this before and the brilliant Grum had some fixes out, but there were still some errors cropping up that we had to ignore for now. It took me a couple of hours, which is much longer than I expected, but I had finished both stages and I was happy with the result. We had a decent deobfuscated copy to work with. Now for the fun part; rewriting Craftbukkit!

I got about 10 files in, when I realised "this is going to be difficult with nobody else to keep people updated at the same time", so I decided to take a 10 minute break and throw up a google spreadsheet with a fancy progress indicator and stuff. Filled in the list of things I had to do, tweeted the link, and that was my entire break over. Back to coding!

There were a big bunch of changes and refactoring which meant that we had to (and still have to, at time of writing) review a lot of our old code to make sure we can still use it in the new version, and it introduced a big opportunity for bugs to sneak in.

4 hours passed, I hadn't taken a single break other than to post updates on twitter every half hour or so, and my hands were killing me. The list had just hit 50%, and I was so very tired already. Grum had become available to help speed it up, and did a handful of files before he unfortunately had to run off again, but that shaved a tonne of time off for me. Yay Grum! :D

7 hours later. Over 13 hours from when I started this whole thing. Tahg was available to assist with some things too, and we finally hit 100%. It was like spending all of Christmas dinner as a kid, gorging yourself on food that you just can't eat anymore but you know that you'll get to open presents soon. Well, that time came, and I decided we should build it and let everyone see for themselves just how badly it'll break.

Uh. Yeah. One problem with that. Jenkins, a robot which builds Craftbukkit for us, decided now would be a good time to not function as we like. Humbug! I compiled it myself and tweeted the link, and my server went down within seconds. Nothing bad though, seems there was a leak of some kind in nginx and a restart fixed it easily. Jenkins realised he would be out of the job soon and decided to build properly, and then I could put pressure away from my server. Brilliant!

So just how bad did it break? Not that bad, actually! There were some obvious bugs to start with, which we fixed pretty easily, but there were also some nasty bugs which we couldn't figure out yet. I stayed to test and fix all the bugs I could find, and help locate the other ones, and before I realised it the team had already gone to sleep and woke up again for the next day. Oh crap, I stayed up all night working on this. Oh well!

I fixed a few more bugs and decided to head to sleep, because at this point I had been working for over 24 solid hours with no breaks, my hands were raw and my eyes had melted. I needed rest. I had promised people that I wouldn't sleep until it works, and it works so I think I earned the rest :D

Next day, we had some more progress squashing the small bugs but there were still 2 killer bugs that we absolutely could not find; you can't walk through doors that are placed together (double doors), and entities keep being saved into the wrong chunks for no apparent reason. We managed to squish the first bug yesterday, apparently there was an issue with overloaded methods (yay obfuscation!), but the second one still alludes us and we cannot find it at all.

We also fixed a pretty nasty accidental DOS within the server; every tick, it would send playercount^2 packets. For a server with 100 people, that's 200,000 packets being send out a second plus 2,000 being received. Ouch! We fixed this with some cool mathy code that Grum devised which distributes the load equally every tick, and added an option to disable the whole player list feature entirely if people so wish, so it should be much better now.

Yet again, as I type this I notice that I'm slowly fading into the next day, so I'm going to get some more rest and hopefully find the entity bug tomorrow. Wish me luck :D

Comments

that guy
that guy on 09/17/2011 4:18 a.m. #

so....no rb to day then?

Midget_3111
Midget_3111 on 09/17/2011 4:24 a.m. #

You're awesome dinnerBone!

DrWagstaff
DrWagstaff on 09/17/2011 4:24 a.m. #

You rule dinnerbone. Keep being awesome.

Namastelh
Namastelh on 09/17/2011 4:24 a.m. #

I'm glad you're getting some rest - you're doing a great job - all of you are! Thanks So Much!

That other guy
That other guy on 09/17/2011 4:27 a.m. #

they are working on it :D im just inspired by his dedication i would have chunked my lap top acroos the room O.o

Peter
Peter on 09/17/2011 4:28 a.m. #

Just a word of thanks. Thanks =D.

T8rfudgees
T8rfudgees on 09/17/2011 4:29 a.m. #

Epic.....Thanks for all the hard work!

That other guy
That other guy on 09/17/2011 4:41 a.m. #

me again i just wanted to say i love bukkit! And guess what! I now love Dinnerbone O.O i read his older pots made me laugh alot! "furnaces are evil" xD

That other guy
That other guy on 09/17/2011 4:42 a.m. #

shiz i hate when a letter always gets messed up in anything i say............

Munkyman587
Munkyman587 on 09/17/2011 4:48 a.m. #

Thanks for the work! I don't know how you do it, my eyes would fall out of their sockets after that long. I hope you get the credit you deserve for the dedication

Braden
Braden on 09/17/2011 4:55 a.m. #

Thank you!

nanashiRei
nanashiRei on 09/17/2011 4:56 a.m. #

Crazy... i like you attitude :)

XcuzHD
XcuzHD on 09/17/2011 5:07 a.m. #

I like your attitude. Good job so far. I don't know anything about coding programs and mods, but I assume there is tons of typing to do. Keep up the good work and get a recommended build up. :D

munchmo
munchmo on 09/17/2011 5:08 a.m. #

Thanks for all your hard work! Looking forward to the RB.

Chrisf99
Chrisf99 on 09/17/2011 5:14 a.m. #

Thanks for the interesting post and thanks for doing this.

Also, I thought you guys were going to get de obfuscated code from Mojang. You should because mc is only as successful because of Bukkit and hey0 before it.

Nami
Nami on 09/17/2011 5:23 a.m. #

Your awesome! Thank you for all the hours of work! I can't afford to donate :( Will some cookies do?

A_C_E
A_C_E on 09/17/2011 6:22 a.m. #

Very,Very THANK YOU dinnerbone

Killerrabbit
Killerrabbit on 09/17/2011 8:49 a.m. #

Thanks for the amazing work, from you and rest of the team. I feel its time for a donation honestly.

Jackcrawf3
Jackcrawf3 on 09/17/2011 9:03 a.m. #

Dinner, you boss ^^

Jollefjoll
Jollefjoll on 09/17/2011 9:26 a.m. #

Dinner is keeping at doing his magic.

Now is the time to donate, people. Should you not afford or in any other way be incapable of. There's an alternative, click the add on this page and just close it down, repeat a couple of times and you'll actually contribute!

Looking forward to when it's done, we'll have lots of fun with the spawn construction, Dinnerbone. Have that, a meal, and some sleep as a carrot for the race to the finish!

Chrisf99
Chrisf99 on 09/17/2011 10:11 a.m. #

I did the ad clicky thing; I have a date with a 55 year old woman tonight now but I'm not worried because if I get lucky I also got an anti snoring device.

Rikard
Rikard on 09/17/2011 11:03 a.m. #

Thanks for all your hard work Dinnerbone! Bukkit is great!

Battlecake
Battlecake on 09/17/2011 12:04 p.m. #

Well done Dinnerbone! what would minecraft be without bukkit? Just amazing work, you deserve a hug!

l104693
l104693 on 09/17/2011 12:20 p.m. #

Wow! I have TONS of respect for you!
You are the minecraft-mp GOD!

Innsewerants
Innsewerants on 09/17/2011 1:19 p.m. #

Wish I could code and help out, but I just don't get further than some scripting and simple tools.

Thanks for all the work in making a decent server for minecraft with bukkit.
Hope you get it all fixed soon but from me: take your time, I'd rather wait a little longer and get a good rb and you less overworked :)

Cheers!

happytor
happytor on 09/17/2011 1:30 p.m. #

WAY TO GO BONE!!!
keep it up! For all you people saying hurry up!, Hes doing his best!

untergrundbiber
untergrundbiber on 09/17/2011 4:07 p.m. #

Thank you! You are awesome :)
Let us all press the Donate-Button :D

w000rm
w000rm on 09/17/2011 7:53 p.m. #

Thank you for your dedication to the bukkit project, this must be stressing for you! You're great.

PipTheNinja
PipTheNinja on 09/17/2011 9:13 p.m. #

this is cool

Max Oomen
Max Oomen on 09/17/2011 11:02 p.m. #

It totally OK that it's not done yet. I can wait for a bit. You still have a life :D

Minecraft servers
Minecraft servers on 09/20/2011 6:44 p.m. #

Amazing work Dinnerbone and great dedication from your side. I love to do those all-ins also at times. Draining but always quite rewarding.

DragonSoulSong
DragonSoulSong on 09/21/2011 1:37 a.m. #

HOLY ****!!!! A solid 24 hours of coding! O.O You are awesome! The most I can manage in a sitting is 3! XD

obnoxint
obnoxint on 09/21/2011 2:49 a.m. #

Please watch your health. What's not good for you is not good for everyone else.

MrCaira
MrCaira on 09/21/2011 8:20 a.m. #

You are awesome, keep up the good work, but i have to say.... o.O 24 hours of solid coding, you crazy bastard. Narh i am just kidding, keep up ya good work! :D

ScottSpittle
ScottSpittle on 09/21/2011 8:22 a.m. #

I want your babies!!!

Martin Schneyra
Martin Schneyra on 09/21/2011 8:52 a.m. #

Just one thing: Thanks for your work.

VOTProductions
VOTProductions on 09/21/2011 10:31 a.m. #

So when's the pizza step going to be :D

YOMAMA
YOMAMA on 09/21/2011 2:36 p.m. #

I want a pet grum......

Frogging101
Frogging101 on 11/21/2011 12:37 a.m. #

Wow, you work bloody hard. I applaud your efforts and dedication.

Leave a comment

Comments are now closed for this entry.