Source Code Bending for Minecraft

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am diving deep into working on a Minecraft server – deeper than I have ever gone before. Let’s get started!

Minecraft: A Game of Memories

My family has maintained a small Minecraft community for a few years now. With DS9 Fireblade’s larger server, Phoenixcraft, going on the lull –the family’s been helping moderate– we’re all waiting for the Minecraft 1.18 update. Our closer group of friends is feeling ready for a new season, but we don’t want to start a whole new one just yet. That leaves us with revamping the current season of Creepers N Cream, our family-run server.

A friend at university got me into Avatar the Last Airbender, a show set in a world where some people have super abilities to manipulate [or bend] one of the classical elements: water, earth, fire, air. I brought it home. I was into its unofficial tie-in plugin for Minecraft even before my whole family had accounts. I credit the bending plugin with getting me into running servers as far back as Minecraft 1.6. On one of my previous servers, there existed an official RPG side-plugin that added world events that strengthen or nerf your bending.

Years have passed and I’ve played the plugin a few times. It’s still around, but it’s called Project Korra now (PK). Time has not been as friendly to the Bending RPG side-plugin, though. The latest full release is a couple months shy of seven years ago.

The Test Server and Compiling From Source

I started a server for testing all the plugins we expect to be using. It was taken over for a family survival world, and I made a second testing world for just bending and bending RPG. The old plugin loaded, to a little surprise from chat on the ProjectKorra Discord when I reached out and told them it made its announcements, but didn’t affect actual gameplay. Someone directed me to the ProjectKorraRPG GitHub, where I could find a more recent, less out of date version of the plugin – specifically the event-concurency branch.

Java is not a favorite language. I’ve tried getting into it no fewer than three times, but the barrier to entry kept getting in my way. Long story short, their development-support channel was quite helpful and I even got in contact with the most recent developer on the PK Discord, Simplicitee. It was a long, involved process –possibly worth a blog post in its own right had I better understood what I was doing– but with help, I managed to provide get the needed .jar files, update a few version numbers, and set up a symbolic link (from memory even) where the compiler expected. Eventually, I got myself a compiled version of Bending RPG and running on the server. Simplicitee even noticed my efforts and started working on it again, starting with updating the GitHub for the first time in two years. I have yet to compile this version yet though, but not for lack of trying.

My sister, Taz, and I test played it, and while the actual RPG mechanics took a little getting used to, they were playable, even if they lack balance – an armor stand defaulted to the same XP as a mob, passive, hostile, or even boss (configurable).

While that all was going on, our whole inspiration for playing the bending plugin again was a video showcasing an earthbending move that looked like a revamped seismic sense for earthbending. It made the move look awesome when no one in the family has really gotten earth as an element yet. We quickly learned it was actually an ability pack called TerraSense by Hiro or Hiro3 (Discord and PK forums, respectfully), and the latest publication was only relevant to plugin versions pertaining to Minecraft 1.17 and not 1.17.1, the version we’re playing on. Hiro was kind enough to provide me with a work in progress 1.17.1 build for my server and I’ve been reporting bugs as they show up.

Bending on our Apex server

Our target world was a 1.17 vanilla world running on Apex. I stipulated that I wold not be doing anything with the server until I had a copy of it running locally. Apex support directed me to one of their videos, and I followed it… and waited for the uncompressed download to progress – Apex has built-in compression in their provided online FTP access client. I wasn’t able to get it on a server, but I did load it up in single player. A viable copy is safely stored on GoldenOakLibry, our network storage.

In theory, switching server jars is as simple as operating a drop-down menu and uploading any plugins. In practice though, our server file space is cluttered. There were some plugins from the last time we were on a Bukkit server or something because they jumped to life when Paper Spigot for 1.17.1 crashed trying to load them and one was incompatible. When we switch to 1.18, I fully intend to compress the whole thing, download it, and wipe everything. I expect there are world files for at least a couple servers in there.

Takeaway

Programming is about more than coding. For this project, I was able to give back to the community by identifying bugs and sharing my findings. As I was writing, I received the news that several of my reported bugs were now patched. One edge case bug involving switching to spectator mode while flying even sparked a conversation where that led to solving a number of seemingly disjoint bugs and it was addressed before I had the chance to follow up with a better description.

Final Question

Have you ever contributed back to a project you enjoy?

Leave a Reply