At Mineteria, we have to operate Minecraft on massive scale. Part of that story ultimately involved creating our own fork of the Paper Minecraft server software for Minecraft 1.12.2 called Imagine.

Featured photo adapted from a photo by Oliver Roos on Unsplash

Why Minecraft 1.12?

Before we get started, we'd like to discuss why we chose Minecraft 1.12.2 as the base for the server. A very common request from our players is to update the server so that players can use blocks from newer versions of Minecraft. Unfortunately, updating the server to a newer version would be a very difficult undertaking.

When Mineteria was in development, Minecraft 1.12 was the latest version of Minecraft. We first launched the server in public beta on July 1, 2018, before the release of Minecraft 1.13 on July 18, 2018. However, the initial release of Minecraft 1.13 was riddled with major performance regressions and a complicated update process from both Spigot and Paper, making it a non-starter for us to upgrade. Minecraft 1.14 was significantly worse in terms of performance. Mojang has since made some improvements with Minecraft 1.15 and 1.16 that improved performance, but it is nowhere near the performance we have managed to achieve with 1.12 despite the hard work of the server community as a whole.

Another reason for us to hold off on upgrading were combat changes. In Minecraft 1.9, Mojang made multiple changes to combat that were unpopular with many players who focused on PvP. While Mineteria is not a PvP-focused server, there is still a significant PvP component to the server (such as in our minigames) and so it was important to pay attention to the PvP experience on the server.

Finally, there is a significant portion of the server that is tightly bound to assumptions and code in the Minecraft 1.12 server. It would be extremely difficult to update our entire, largely custom codebase to a newer Minecraft version without our team of developers devoting at least several weeks to the task, during which time we couldn't evolve the server for players in the interim, all while also having to maintain the current server to fix bugs. Simply put, an update to a newer version of Minecraft is technically possible, but logistically infeasible without significantly more developers on board without essentially pausing all other work to focus only on the update. This is not acceptable.

Why fork Paper?

Signage in Tallinn, Estonia
Photo by Daria Nepriakhina / Unsplash

We had numerous reasons to begin our own fork of Paper. We already had a pre-existing fork of Paper used to support housing (our replacement for it is the subject of a future post - stay tuned!) However, this fork was fiddly, did not follow best practices for patching Paper, and we sought to optimize the server further. We were starting to run into the point where the server software (amongst other things) was holding us back from fully realizing what CPU power we did have (at the time, we were using cloud hosting from DigitalOcean).

The idea came from one of our engineers (specifically, me). We already had to fork Paper 1.12.2 for performance reasons well before we decided to establish the fork. The initial impetus for us to fork was to have the ability to disable armor stand ticking. The ability to do that in newer versions of Paper today was originally a Mineteria innovation. We also wanted to backport critical fixes and features from Paper 1.13 and above. Today, Imagine contains dozens of patches, including select rewrites of server functionality, bug fixes, revamped combat, and new features (that we will write about over time!)

Over time, the move to our own private fork of Paper has paid us dividends. Without forking Paper, much of the functionality we wanted to create could have not been possible.

As we wrap up 2020, we hope that 2021 will be even better for Mineteria. We have big dreams and big projects. Stay tuned.