Skip to main content

Retiring from and Reflections on Modding Minecraft

Well, here it is. It’s been an open secret within the Violet Moon Discord and community that I would be retiring from modding Minecraft soon, and here is the announcement.

This comes exactly 10 years from the day I publicly released my first mod (the timing wasn’t a coincidence, I saw it while writing the post and decided to release it today, as a nice whole number).

I wanted to spend some time reminiscing about my journey with Minecraft and modded, and where things will go next from here.

Discuss this post on the Violet Moon forums here: https://forum.violetmoon.org/d/143

Background

I got Minecraft as a birthday gift in 2011. I don’t remember anymore where I initially discovered the game, but it was likely through word-of-mouth with friends. At the time, the 1.0.0 release was hot off the presses. Before even receiving the game, I had stayed up late many nights reading as many pages of the Minecraft wiki as I could, that was how hyped I was about it.

My first interactions with modded were in 2012. I had set up a Bukkit SMP with some friends, and we played regularly. This exposed me to modified server software, and eventually I would make my first Bukkit plugin during free time in computer science class: A fart explosion plugin. Yes. I refuse to believe I’m the only teenage child that did this when learning how to write plugins. Basically it just had a chance of causing an explosion whenever you crouched, and that was it, and it was Funny.

Eventually, my attention turned to “real” mods, not server plugins, as the same friend group wanted to play the influential Tekkit modpack. We installed it on the server and got going, also playing the FTB Direwolf20 1.4 pack and FTB Ultimate in later iterations. The FTB Ultimate world remains my favorite modded Minecraft world and one of my favorite modpacks.

BugfixMod and early PR’s

I slowly stepped into the “programming mods” phase, armed with dangerously enough cluelessness from computer science class. My very first mod was XPFix, released exactly 10 years ago, a mod that fixed a vanilla bug where XP Orbs wouldn’t spawn properly. I would follow this with two other small bug fix mods, then eventually merged them all into one mod, aptly called BugFixMod, which even has a modern continuation in FoamFix17. The implementation was horrible, though. I had no idea how obfuscation worked, and finding injection points was done pretty much blindly with heuristics that look sort of like Mixin if you squint hard enough. So I like to joke that I could have invented Mixin in 2013 if I had been smarter.

In late 2014 and early 2015, I began looking at submitting contributions to modded Minecraft projects. My first ever pair were to the MinecraftForge modding API, PR’s 1225 and 1226, both to fix vanilla bugs that I found frustrating.

ProjectE

My next contribution was significantly larger. At the time, one of my favorite mods from the Tekkit days (EE2) was now dormant, and a reimplementation of it called ProjectE had surfaced. I first submitted some minor bugfixes, but the hallmark was reimplementing the Dark Matter Pedestal (a missing EE2 feature in ProjectE) in PR 530. After a year of external contributions, I was given a commit bit and began driving primary maintainership of the project.

I would continue to serve this role until October 2019, when I stepped down from the team and handed the reins over to pupnewfster, who maintains it today.

Twilight Forest

Throughout 2016, I had been toying on and off with porting the venerable Twilight Forest mod from 1.7 to the latest versions of the game. Coincidentally, in the summer of 2017, I saw that efforts were being kicked off by Drullkus and others to port the mod. Not wanting us to duplicate effort, I quickly revealed my in-progress work and we joined forces, eventually completing the port to 1.9.

I stuck around as a contributor for a while, but ended up stepping down around 2020 after getting burned out during the port to Minecraft 1.15, deciding to focus exclusively on Botania.

My time on TF was the briefest of the three large mods I’ve worked on, but I’m proud that I was able to help resurrect a classic mod and get it to modern versions of the game. The mod is doing well today and consistently tracks the latest versions of the game.

Botania (and Patchouli)

How I started working on Botania was a bit of a strange story. Basically, Minecraft 1.8 had upheaved the codebase and broken essentially all mods in disastrous manner. At the time, Vazkii had expressed that the work required would be too much to handle.

I thought this would be a shame, and wanted to challenge myself with porting the mod to 1.8, so over winter 2015-2016 I spent hours porting the mod, releasing it as “Botania Unofficial” .

Soon after this, due to the drama around the removal of the passive decay option, Vazkii ended up making a “final” release of Botania 1.7, build 249, and discontinuing the mod for the foreseeable future.

This left me basically as the upstream of the mod in later versions, where I would continue working on it in unofficial capacity through 1.8, 1.9, and 1.10. In the 1.10 lifecycle, Vazkii briefly returned to active work on the mod, merging my fork and adding new features such as the Dodge Ring. Official Botania releases resumed.

I briefly contributed using pull requests, but was quickly given a commit bit. So, funnily enough, I only have 4 accounted PR’s to Botania, whereas for ProjectE I had over 80 before I got a commit bit.

From then on, I continued to lead the maintenance and modernization of the mod’s code, joined later by Hubry, Alwinfy, and ArtemisSystem. Many things happened during this time: all the porting to new versions, adding new features, taking over maintainership of Patchouli and moving the lexicon to it, porting to Fabric and multiloader, giving a technical talk about it, continuing cleanup of the code. Which has led us to today.

Reflections

In these 10 years, the game has changed a lot, and so have I.

I basically grew up as an engineer through Minecraft modding: learning git, submitting changes, project management, learning how to perform large refactorings through porting, etc. I like to think that Minecraft modding has raised an entire generation of software engineers, and from some brief chatting around it seems like this story is not uncommon.

However, throughout the years, my love for the game has diminished. I have not played a strong single player world since 2015, and multiplayer since the 1.16 testing server (which was for testing). The pace of modded Minecraft and the increased complexity and fluff in vanilla Minecraft have both turned me off, and I think it’s time I accept that maybe I have grown out of the game.

As I grow older, too, time becomes more limited, especially after starting a full time job. It is depressing how little time one actually has after getting off of work. I used to spend much of this time modding Minecraft for hours, but I feel it’s time to branch out further – practicing my musical instruments, reading more, spending time with family and friends. Botania is a tightly-run ship, where we invested on cleaning the codebase to prevent tech debt from getting out of hand, but I no longer think I can handle another grind to port the mod to yet another vanilla release that has broken half of the mods.

In the words of Touhou Project author ZUN, when asked what the most important thing was when making doujin works, “It’s okay to stop when you don’t like it anymore”. Knowing when to stop, put something down, and send it off with a smile is an important part of life.

So, then, my stopping point is here. A nice round 10 years after my first mod, and coincidentally also near Botania’s 10 year anniversary. Patchouli will mostly become “community-maintained”, meaning the community will be the one mostly responsible for contributing things they want to see, including ports to future versions. However, Minecraftschurli, Alwinfy, and artemis are available to review contributions when they have time. Botania will continue to be maintained by Hubry, Alwinfy, and artemis, but they are all busy and activity will be slower than it already has been.

I have tried “soft-quitting” modding before, but that only lasted a couple months before I was drawn back in. This time, I am going to go harder by removing all the repositories and toolchains from my computer, and disabling all GitHub notifications for the mods. When necessary, I can consult with contributors on the proper way to make changes (at least while I still remember the codebase), but I will not be programming Minecraft mods any more for the foreseeable future.

I will remain keyholder/admin for various Violet Moon properties such as the Discord, GitHub, CurseForge/Modrinth, and Violet Moon Forums, and will continue to participate in the community where I already do (e.g. forums, IRC, and tech_chat). So don’t worry, you’ll continue to see me around, but just as a friend of the community.

Botania CD

One final note is that we are working on a commemorative CD for Botania’s 10th anniversary next year. Because it doesn’t actually involve coding or modding (only emailing disc vendors and other admin stuff), I will see this project through to the end as my final contribution to Violet Moon Modding. Look out for more details about it very soon!

Final Thanks

Thank you for sticking by me and Botania for these past 10 years.

Shoutouts to:

  • All the people in #feedthebeast IRC I used to chat with regularly. I miss those simpler times.
  • All the people I worked with in various areas of the modded ecosystem, from collaborating on mods to debating MCP names and bikeshedding PR’s.
  • Vazkii, for trusting me take care of one of your seminal mods. My career has been shaped in large part by Botania and for that I’m eternally grateful.
  • Violet Moon regulars in the Botania channel and tech_chat/IRC, including but not limited to Emi, Kame, Minerva, Fizz, Jas, Artemis, Alwinfy, and Eutro.
  • All contributors and players of all mods I’ve worked on (too many to list so I won’t)

Now then, 後會有期 – May we meet again.