MineCraft Boat Race Port Part 1

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I’m starting a new project in MineCraft. Let’s get started!

A couple years ago, the MineCraft server I sometimes play in, Titancraft, had a special mini-game built for it where a player gets into any one of three arenas and plays through a series of five courses and gets an award at the end. Any of the arenas would load the player’s next level, but that was about it from a technical aspect, as far as I’ve figured out. I want to port it to MineCraft 1.13. (As of this writing, the MineCraft is on 1.13 release 3, updated in the middle of this week).

First, I contacted one of the moderators, GrifterMage, and got his blessing on the project. Then, I started setting up a server as close as the target software as possible. I understand the server runs on Spigot, and that they had been making 1.13 pre-release snapshots… which I couldn’t seem to compile. I setup a vanilla server thinking this project is likely to take either two or three weeks.

I started looking into installing structure block files. They had changed for 1.13. Now, they are part of something with a steeper learning curve, but have all the more power once you get the idea of them: datapacks. Following the trend of going from texture packs to resource packs, datapacks are a new series of files that organize simple modifications to the game. All I know about them so far is that they contain both functions and structures, which before now were more free floating in their own folders, and that the packs themselves can be switched on and off.

With a vanilla server and a bit of ambition, I set about making a “Hello World” function. I asked for some help on the server’s Discord channel, and a user by the name of DrHenchman was helpful in pointing me to the correct way to structure a datapack; I sent him a bunch of screenshots as I debugged my way to victory.

Structure block files can save and load sections of the world up to 32 blocks in each of the three directions, so I made four test levels of 32×32 blocks and got them to load from a datapack on the server.

When I started thinking about the actual levels, I started looking for any videos someone may have had with footage of when the map was originally operational. I found acg1000’s posted livestream from when the custom dimension containing the boat race was opened, but two hours seemed a bit much for a just-adequate-for-YouTube WiFi connection when I needed to skip around a bit. After I skimmed it using my PC, low quality, and 2x speed. He didn’t have it…. Later, GrifterMage managed to scare up the original structure block files for me to work on. Another mod, DropDaBass, apparently had a copy. They are both awesome for that.

The files are two years old. A lot of things have changed since then. First of all, from 1.12 to 1.13, structure files no longer accept capital letters in their file names. Even though I was cautioned against it, I tried copying the files directly into 1.13 and changing the names and dropping them in the correct place to load them. I don’t remember exactly what happened, but they didn’t work correctly. I ended up having to load them all up in 1.12 and re-save them.

Which brought me to another challenge. One of the levels features floating water blocks. Before, they were simply “still_water”, a feature removed for 1.13. As a side effect, the now-regular water blocks flooded the level. As a step in the correct direction, I put a repeat command block out to continuously clean up the drips. The seizure alert results should have been expected. I then messed around with using “structure_void” blocks to hold up the water, since they look the same as air when you’re in adventure mode. Structure_void blocks are about the one block structure blocks cannot copy. So I set my commands to filling each level with them as soon as it was loaded. The next command replaced any leaked water blocks, in case of any lag Grifter pointed out there may be. Ultimately, I’m opting to just use a crazy block, like diamond ore blocks, to contain the water until they can be replaced when the level loads.

Around this time, I poked into loading the actual arena building, including the lobby and thee arena floors above it I gutted two of the three arena command blocks and started installing the hardware for my port. The existing logic no longer functioned, in either 1.12 or 1.13. After an hour or two, I found the credits to three people who originally worked on it. TheDukeMinecraft, listed as Project Manager, Designer, and Builder; 2CubedTech, listed as Tester and Command Writer; and dminer78 listed as Tester and Food Eater.

I reached out to the only original designer still present on Titancraft’s Discord server, Duke. He was eventually able to put me in contact with 2Cubed. Both seem excited that their old project is getting some love, but I got the impression both are busy with their own endeavors.

While I was waiting for messages back from Duke and later 2Cubed, work continued on the design. One of my priorities is minimizing load on the server. This means as few repeat command blocks running their contents every tick as possible. (Another reason why the blinking water was a bad idea). All I really need is two end conditions listening for if the player is standing or if his boat is at the goal, a line of three gold blocks. To make things more interesting, I wanted the ability to load one of two maps for each level, one classic or one newly built for the grand re-opening. While I still don’t have the logic figured out, I have a comment version of it in the server files. These are very likely to get rethought and scrapped.

I looked out in the vast, 30×30 room that was the command block room. It is so big! There’s room for a lot more than just a few levels. I mocked up some structure blocks and found that each arena can hold up to 4 separate games of 5 levels each, with 6 variants of each level. And then I did one better. After working with the levels themselves, I produced a version that loads both halves from a single structure block. Now that that 4×5 corridor can hold even more levels. Plenty of room for expansion.

This week, my lesson has been about building a team. My skills don’t quite encompass the full spectrum of tasks that need to be done. As I was starting my writeup, a fellow Titancraft member, jamcdonald120 just agreed to help with the scoreboard commands. As soon as I get the files transferred over to my server computer, I’m looking to have him help me with those.

Final Question: Did you know that, even though it will work and act all normal, MineCraft 1.13 pre-releases don’t seem to like dashes in their file names?

Leave a Reply