Ice Boat Challenge Port Revamp Part 2

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am covering the finer details of my port of one of my favorite minigames in Minecraft. Let’s get started.

Many times over this project, I’ve tun into bugs. There is no way I’d remember them all, but I did pick up a few tips along the way, mostly from Grifter. If things are going wrong with relative coordinates, try aligning yourself with the source block and teleporting to the relative coordinates. Another approach is to set a particle in a repeat command block or a chain command block downstream of one. More often than not, one of these will literally get you where you want to go. I recommend the barrier particle for its lack of movement and occupation of a full block space.

Another bug I had to deal with a lot early on was invalid functions. If you try loading a datapack with an invalid function, Minecraft just throws a compilation-time-like error in the console then ignores it. Fortunately, the error report, once I read it under Grifter’s instruction, told me where the function, line, and column of each error was. It also didn’t help that Minecraft functions can’t have a comment start part way through a line.

The most recent bug I had to deal with was one that royally goofed it during some stress testing my parents, Annie_8472 and Leo_8472, kindly provided. Sometimes, a level wouldn’t load if you didn’t make it onto the pressure plates far enough. I tried fixing that by using align xyz command segments, but I only made it worse. I never did figure it out because I reverted the change and extended the search range to include a bit more of the alcove. For those keeping score, the bug was with the IBC game and not the MGC core.

At present, the project is almost done; I don’t think I’ll have enough for a whole new post next week, but I still need to debug the Lost & Found. Jamcdonald, the one who showed me the super hoppers last time, did a quick test for me and made note of the bug. He also pointed me in the direction of a place to get signs to do some fancy stuff the original credits signs do.

Final Question: I’m open to further development after things launch. What kind of levels do you want to see in this datapack?

Ice Boat Challenge Port Re-revamp

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am going over the “boat race” I ported to Minecraft 1.13 vanilla. Let’s get started.

At the beginning of the week, GrifterMage, an admin on the Minecraft server I play on, showed interest in getting the boat race up and running again sometime soon. I had already changed its host server over to a “Paper” server, like the server the project is being built for. Everything worked for a little while, but one day, the datapacks I tried sending weren’t working. I restarted my server, and my “original” copy was broken.

I decided to rebuild the backbone of the project from the ground up. While Grifter recommended I reuse as much as possible, I knew there was a certain amount of spaghetti logic at the end. I figured it would take less time to take the lessons I learned last time and make a version 2.1.

Grifter said he was okay with work-in-progress “untested” datapacks, so I made provisions as I set up my workspace. With Derpy set up as a VNC machine, I experimented with different arrangements of windows on both Derpy and my home Windows machine until I ended up with something that works.

My creative server with the secret boat race development laboratory in an Ice Spikes biome served to manufacture the structure files. From there, I would switch over to Derpy, where I would copy them into the “original” datapack along with the “originals” of the functions to run the whole setup. The datapack was stored in a special file on the desktop beside another file called Nightly Backups. This file did not live up to its name. I saved between two to four zip files per day there; whenever I felt I needed to make a progress report to Grifter I would open a terminal and run a command to zip the datapack for both storage and transmission.

The greatest flaw I perceived in my design last time was my inability to be sure someone else could set the game up on another server, so I created a “Clean Paper Server” to test my datapacks myself where I wouldn’t need to worry about anything accidentally relying on some scoreboard objective I forgot to make sure was created. Once I was done, all I had to do was delete the old server, copy the Clean Paper Server beside itself on Derpy’s desktop, copy the datapack into Clean Paper Server (copy 1), launch the server, hop in with my client on Windows, load both halves of the arena, and install the Ice Boat Challenge game. If this were something I was planning on needing to do over the course of a month or more, I would have looked into writing a script to automate what I could on Derpy.

The design objectives of this version remain almost the same as my first attempt at porting the boat race. I want to minimize the load on the server, while making it as easy as possible to develop other games for the system. I ended up coming up with a number of standards, like a “home” block for most command blocks in the Level Slots (floors a level can be loaded into) to run their commands from, forming a sort of two-way vector between the homes of each Alcove and Level Slot.

One improvement I noted in my notes for future development was to set up something similar for navigating the alcove. When Grifter introduced the /data merge command to me so I could use the same structure block for basically anything I wanted, he hinted that Minecraft 1.14 might actually let commands pipe information stored in such structures as input to other commands. I made sure to note that in many places within the comments of my functions. /data merge also opens up the possibility of multiplayer games that hijack functionality from the alcoves, so I made provisions for that functionality in the future.

This time around, the game starts when a player steps in an alcove. The Game Center operating system checks the player’s score for what game they want to play, and loads that game’s loader into the Level Slot for that alcove using a structure block in the home coordinates. The loader checks what slot it’s in, then checks what level to load for the player in the Level Slot’s alcove. It tries to load in the first half of the level, but if it fails for any reason, it has a carefully staged self-destruct to reset the Level Slot while making sure the redstone bits don’t accidentally pop off while multiple blocks are being changed (I’m pretty sure Minecraft likes to work from low y values on up based on an experiment I did with End Gateways, and my observations here back up this hypothesis).

After the loader, a series of command blocks embedded into each level takes over. These blocks handle spawning in the boat, teleporting the player, animating the boat so it does its cool spin, and checking for if the player has won or left their boat. It is here that I fixed a bug where the last version would smash players’ faces every once in a while. I used some redstone to space out commands. One of the last major bugs I faced before I got the main show working was dealing with how I hooked up the win detector. I had two blocks on repeat calling the same function and feeding into the same conditional chain command block. I ended up moving the win condition and giving it its own, dedicated command block.

A very big thanks to Grifter for all the help he’s given me this week. He got me started and helped me build inertia until I understood things well enough to continue mostly on my own. He also provided a friendly Discord avatar for me to explain the problem to in the hopes he would have time to help fix my current bug, only for me to keep working on it and often find it on my own.

A final word: documentation. Documentation is the link between you programming now and whoever is working on your project in the future. I have a whole folder in the root directory of the datapack with what the logic behind the Game Center and the Boat Challenge game is supposed to be. It also has a list of known bugs, a list of naming conventions I found helpful, credits, and even some general notes for what to do for if someone ever rewrites the project again

Final Question: Have you ever gone back to redo a project, only to find you’ve sped up by a fairly large margin


How I Prefer to Deal with Griefers

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am using some kind of new WordPress backend interface to tell you a story this week about something that happened on a creative Minecraft server I run. Let’s get Started.

A while back, I did a project where I revitalized an old, boat race minigame from a previous season of the Minecraft server I play on. I set up a private server to test this operation. Later, my family started projects on that server for others to come in visit before they were built for real. Part of the boat race required people to have OP privileges to work, and not everyone knew about the work on the race. Those that knew ended up being those with OP privileges.

Last week, I heard a report of confused member wondering where the warp points to the different projects went. I logged in and found tell tale signs of explosions around spawn. The pad with all the warps was gone, its command blocks smashed.

I found a name and what looked like a method of destruction. This person had gotten an advancement related to spawning the Wither Boss, a very destructive enemy in the game, and thought it didn’t quite look like a Wither Boss’s direction of destruction, it was close enough to get me to pursue that line of investigation. 

My mother was my primary ally this time. Over the course of a day, we questioned the suspect and assembled a story out of they told us. Apparently, a younger sibling had logged in from school with her account, having mysteriously gotten the IP from somewhere, spawned the wither, [smashed the command blocks], and left. Later, they logged back in and quickly left, fearing they were being framed.

The story didn’t seem quite in line with what the command line was saying, but with only a mouse on Derpy Chips, the computer the creative server is hosted on, things were going a bit painfully slow. I found the IP the griefer was using, and an IP associated with a legitimate access where they had a conversation in chat. The IP’s matched. I know a little about how IP addresses work, but I’m no guru with them. What it looked like to me was that I was getting the IPv4 of the ISP (Internet Service Provider) for the city they were in, and that that was a dead end for investigation for the time.

No matter the story, I was already thinking of how to fix the mess. I knew I had several, old backups and I could just use some of the files from good files instead of the griefed ones. I set Derpy up for work, but found it impossible to easily move the needed files from the latest backup to a copy of the current world.

I thought it would be a good time to try working on my next blog post (today’s), where I wanted to set something up so I didn’t need to ever switch screens and controls around again. Long story short, I tried to plug a different keyboard in from another computer, and it worked. I moved the appropriate files to the copy and had someone look at spawn… and it was the old, bland spawn. I didn’t have a copy of the nice spawn that got ruined. Oh well.

Meanwhile, my mother was still suspicious of the prime user of the grief the account that did the deed. I went chatting with them late at night, getting their story out of them in text before eventually pointing out that it didn’t match up with what I remembered of the logs. I went to sleep, and in the morning, I found a full confession. It was TNT, the wither skull was just meant to look cool, and the self-given command block I had originally assumed had been used to kill the non-existent Wither Boss was a red-herring. They were the guilty party, and they were truly sorry.

In that moment, I felt sort of like how a villain might describe the rush they get when they have their foe begging them for mercy but are still going in for the kill, but my only I thought was to forgive the party who had wronged us. It took me a while to word my response, and my mother had actually gotten back to them before I could respond, but we all were leaning toward forgiving them. OP privileges were revoked, of course, but while flying over the destruction, I was thinking to myself, ‘That would make a really nice lake if it were properly decorated.’ We asked them to repair the damage as a friend.

I was most surprised at their reaction to being offered forgiveness. They were expecting us to get mad, toss around bad names, badmouth them, ban them, and hate them forever “to put it nicely.” I honestly cannot relate.

We asked for a chance to share God on this server, and we can hope that they go and do likewise.

“‘If your brother or sister sins against you, rebuke them; and if they repent, forgive them.'” (Luke 17:3 NIV)

Final Question: Have you ever been forgiven of something, or been a position to forgive someone seeking forgiveness?

MineCraft 1.13 Cave Spider Farm Design

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am taking a break from the regular content on my blog and doing a tutorial on this easy Cave Spider XP farm I’ve developed with a little help. More on that later. Let’s get started!


Minecraft has a small zoo’s worth of farmable mobs, but one of the most challenging is the Cave Spider. With its ability to climb any surface as if it were covered with ladders and its tiny hit box, able to slink through all but the most airtight of hastily built walls, these pests are native to abandoned mineshafts, and nowhere else. The only reason anyone might even consider a Cave Spider XP farm is because of how often multiple spawners can generate close to one another.

.
This tutorial assumes you’ve already found an abandoned mine shaft full of cave spider spawners. Once you have a bunch of spawners captured, write down or take screen shots of each spawner’s coordinates. Remember, mob spawners only activate if you are within 16 blocks, so the farthest apart two spawner blocks can be is 32. If you aren’t sure if two blocks are in range, use the Pythagorean Theorem generalized for three dimensions, √[(x1-x2)²+(y1-y2)²+(z1-z2)²].


If you are looking to develop more than two spawners, which is usually the case if you are going to go for cave spiders, you’ll want to actually graph their x and z coordinates to filter out the false hopes a purely Pythagorean approach can yield. I recommend using a Geometry program like GeoGebra. Draw a 16 block radius around each spawner’s point and look for overlap. Once again, this won’t give you any hard positive results, but it will give you a fairly good idea of what to expect and how big your spawners’ overlap area is so you can start designing your grinding room.

You’re mostly on your own for the next part, since there is a plethora of possible arrangements between spawners, collection systems, and collection points, but I can give a few general tips.
Spawners won’t spawn mobs if too many are within a 9x9x9 box of the spawner block, centered on the exact middle of the spawner block. For maximum efficiency, drop your spiders down four blocks, then at least another two and into a water collection system.


Cave Spiders’ alleged super powers end when they can’t stick to ceilings. We can exploit this by using Iron Bars, Glass Panes, or the like to make a little overhang they can’t climb past. (From here on, whenever I say, “Iron Bars,” just use the narrow block of your choice.) To keep them from climbing into a corner and building up, we can use flowing water at the top to push them off the wall.


Here’s a cross section of my personal collection system. Important notes include highest part of the floor (the system need not be perfectly symmetric) is 4+2 blocks below any spawner above it, There are no water source blocks in the collection area itself, and the final water flow ends on the Iron Bars. Build the middle of the trough similarly, digging down whenever you run out of water instead of adding sources. The pistons are for a gimmicky lighting system I only recommend for those brave enough to deal with lava lighting.


My main innovation for this tutorial was this part right here. By lining the top of the transportation tunnels with top slabs (Trapdoors/Iron Trapdoors should also work and look nice), we don’t have to dig out so far to get that little tip of water to push the cave spiders back; a source and single flowing water should do. Once you are in the tunnel, feel free to use water sources whenever you drop the floor.


When you get to a corner, drop the waterline again and add a source block. On the upper “water rim,” be sure to use an upper slab so the spiders don’t get stuck on a quarter of an exposed block. Just carry the inner corner around the turn, but be sure you don’t accidently turn your flowing water into two lines of source blocks.


Here’s a picture of a Cave Spider grinder design from SteelToad, a colleague of mine from the server I play on. The Spider input is two wide, so I like to put a two wide soul sand bubble elevator in line with it and pipe them directly to the kill chamber.


Back in the plumbing, the entrance of the elevator is only a block wide. Unfortunately, we’ll need to use a pressure plate or sign to contain the elevator water and rely on the spiders pushing against each other to move things along. While we’re at it, we can lose the bars by adding water streams from the sides to guide the cave spiders into where they belong.

A final note: If you plan on any serious AFK time, be sure to include an auto killer switch. When I built this in survival, I used pistons to change the direction the elevator sent the spiders. Other than that, add whatever you want in a Cave Spider farm. Just don’t get too close to the spiders when whacking at them, as they can still occasionally bite.

Final Question: What other design improvements would you add?

MineCraft Boat Race Port Part 7

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am presenting my work to update the Boat Race from Titaincraft Season one’s custom dimension, The Above. Let’s get Started.

If you are here from the server and spot the “Part 7” in the title, don’t worry. I’m writing this post as a fresh introduction to the project. If you’re interested in the development of the project, feel free to go back and have a read, and if I post about further development, Part 9 and above will also be available.

The Above’s boat race was originally built by Duke and  2Cubed with testing by dminer78. In the original game, players would wander into an ice cave and get teleported to the lobby where they could pick an arena to play their personal next level in. Each of the five levels has a different maze to navigate, ending with a row of gold blocks serving as the finish line. After completing the last course, the game would award the player with a Tango head, the special currency of The Above’s prize system.

The new edition used Duke’s levels but has many technological improvements over 2Cubed’s programming. The 1.13 execute command’s overhaul means that whole blocks of commands that were running all the time are replaced with one or two commands with a smaller footprint on the server’s CPU, and they only run as often as needed. A planned time trial mode would increase the replay value (besides the Tango heads). As part of this planned feature, there would also be a way to choose what level pack you want, and whether or not to shuffle the levels among other, new level tracks. And thanks to MineCraft’s introduction of functions, I decided to rebuild the game so it could be easily expandable; not only should it be fairly easy to add even more new levels but also new games as well as time goes on. For now, I’m calling it the Modular Game Center.

Working on this project, I learned a lot and overcame many challenges, many with the help of Jamcdonald120 and a few others. If you want to learn about a few of them, go back and read parts 1-6. As of this writing, the Modular Game Center still needs a little work once 1.13 gets a stable release and Spigot gets its update in turn.

Final Question: What game would you like to see added to the Modular Game Center?

MineCraft Boat Race Port Part 6

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am bringing you another part to the slowing saga of the boat race port. Let’s get started!

Well, I have all the features ready to hopefully impress anyone interested in seeing it. The two landmark objectives this week were getting the teleport commands just right, and getting the boats to spin as the level starts.

The spin was an interesting story. This project is sort of a semi-secret from the rest of the server, so when I need help, I ask how to get a related problem. In the case of the spinning boats entering the level, I asked about how to make a cow spin in a tornado. I adjusted the selector (more generally: stuff I understood) to ask about actually getting a cow [boat] to spin. I ended up coming up with and refining my own solution, which in turn was unsuitable for the spinning cow.

Overall, the project is as close to the original as it’s going to get, barring some changes to reduce unwanted behavior. From this point, I’m going to be introducing new elements, making the whole experience even better.

At this point, I just need to show it off for that blind reaction I mentioned last week. It may be a while, so I think I’m going to start another project next week. Besides, I could blog about half of all the little, uninteresting optimizations I keep doing, but I’d just get bogged down and things would forever get thinner.

This project has been good for me. I cannot recall all the lessons I’ve learned along the way, but one of the newer ones is a reminder not to stop looking for a solution just because you ask out for an answer.

Final Question: What lessons from long projects have you learned?

MineCraft Boat Race Port Part 5

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am excited to announce the near completion of my project. Let’s get started.

Who would have known, not more than 24 hours after writing my last post, 12 after it went live, I would finally have the last major chunk of code working for my demo? I even made my goal of finishing before MineCraft 1.13 launched!

This week was kind to me even after my breakthrough, as I not only finished that up, but I got the other two alcove/arena combos working. Jam was helpful with getting the /tellraw commands working when he told me to just change out the old selecters.

I also worked over the end of level win condition, patching a bug where you could import a boat and cheat your way to the end. It turns out the boat would sometimes get stuck on elevators and break apart, forcing the player out of the level and resetting their progress. I made the level require the use of the original boat by setting (and checking for) an invulnerable flag on the boat. Unfortunately, I have no way of testing the invulnerable flag on glitching boats.

As it is now, I think the experience is at about 99.9% of the original. The original boats spun in air as they were summoned, and I still need to nail the /teleport commands.

I showed my work off to a few people this week. Duke, the guy who built the levels and my first guest after the workable demo, came by and helped me with a potentially embarrassing bug for when Tango (the owner of the Patreon server I play on) eventually does a blind reaction. New players need a valid score before they can enter the level for the first time. I fixed that for him and when DropDaBass, the server’s head moderator, came by.

There are still a few minor bugs. Sometimes timings don’t work out the best and you take a little damage on the way to the arena. Once in a large while, the level unloads around you without returning you to the lobby. There’s trouble with FPS (Frames Per Second) when connected over the Internet and a level unloads. There will always be something to polish.

One of my major goals for this build is the flexibility to add more games. I brought another patron over called Pendl3, who is looking to help me with my random throw away idea of a golf course. Getting the code ready for running dual games will be interesting, but I will complete the challenge.

Final Question: Simple, what games should I add? I think it would be good for me to add a few a year and they can either players or moderators swap them out with a control panel.

MineCraft Boat Race Port Part 4

Good Morning, from my Robotics Lab! This is Shadow_8472, and today, I’m almost done with my port of 2Cubed’s boat race. Let’s get started!

This week felt like progress was made in spurts thanks to both jam and Grifter, the two people from my MineCraft server helping me. About all my major accomplishments this week are in part to their command proofreading. Early on, I was working on the code to start the level. The /tp command and its supporting code was challenging to get just right. I came up with the idea to use an identifier block no player could [normally] see and reference it from commands later and jam helped me get something working. I was able to tune it in from there.

Jam once again helped me understand how the scoreboard works so I could build a level select. Long story short, imagine a spreadsheet. You have objectives at the top and entities on the side. Each cell at the intersection has a score to edit. There are no “global” scores, as much as I’d like to think that would make it easier on the learning curve. Objectives are added without attachment to an entity, but scores in those objectives are. Once I had that, I could step on a pressure plate to set my next_level objective to some level and load it with the alcove pressure plates.

Then came a day or few where nothing much happened, but with MineCraft 1.13 almost out, I wanted a workable demo by its launch date. A friend showed interest in seeing my work so far, and part way through the week, I scheduled a viewing on Friday, but I didn’t make it.

The next major hurdle after the teleport was how to tell if there were any players in the arena outside their boat and outside the starting area. After tossing the old command to jam and back (without luck), I passed the problem to Grifter, and he was awesome. He isolated a targeting selector I needed, where I likely would have figured it out in another few hours.

My focus sort of drifted to the win condition. Sure, it took me a while, but I eventually realized I could do it with a single command. Getting that command was another topic. I did most of the work in assembling it, and jam got me a snippet that gave me a working theory. The commands were a bit stubborn, but after I got something almost working, another chat with jam and it’s working.

The most recent challenge was targeting “cheating” players. The old game used scoreboards for almost everything. Something about a cheater tag showed up if you stood up and you weren’t in the start area. I wrote a command, finished by Grifter after hours of me doing trial and error, that spammed the word “hi” at any “cheating” players in adventure mode. And that’s where I am now. The next step is to replace the /say command embedded within the /execute with a function command to clean up players who might be done with a level.

I guess I have been making more progress than I thought this week. Before those last two breakthroughs on Sunday evening, I was all ready to make a big speech on progress and how a lack of success doesn’t mean you aren’t making any. Thomas Edison comes to mind with his brute force work on the electric light bulb. Once you know something doesn’t work, you don’t try it anymore. My difference here is that I’m documenting my progress with personal messages.

Final Question: I’ve now doubled my original project estimation time. I don’t really care. I’m getting working results on a semi-regular basis, and I might just get my 1.13 deadline. Even if I don’t make that one, I’d still like to get it working before my server updates. Have you ever worked with multiple deadlines for the same project?

MineCraft Boat Race Port Part 2

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am updating my progress on the boat race. Let’s get started.

The race still isn’t playable. I managed to get the levels loading correctly from the command block room, special effects and all. All I’m just waiting on the completed functions back from jam.

In the meantime, my vision of this project has expanded. I’m now calling it the “Modular Game Center.” Basically, someone will be able to come in, flip some switches and play one of a number of games. Let’s say I have the expanded boat race and a golf course packed in there as well. The hardest part was programming for that eventual possibility.

Other than that, I showed off my work for last week’s post to a lot of the people involved in making the original boat race as well as my server admins. There’s word of the server resetting soon, so I’m hoping it will be done by then.

Once again, team building is the lesson up for learning here. This is a non-paid position, so if I don’t hear back from jam within a few days, I’m going to start figuring out how to do the functions myself. It will likely take a bit longer, but I found a great tutorial on how to build the commands.

Final Question: It’s a lot harder to write about writing software than building hardware. I don’t have as much to say this time… MineCraft kept crashing… Have you dealt with the pre-releases?

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?