Vanilla+ | Semi-vanilla survival multiplayer Minecraft server

Vanilla+ | Semi-vanilla survival multiplayer Minecraft server

Vanilla+ (vanillaplus.net) was a large scale Minecraft server focused on competitive 'Crystal PvP' while staying close to vanilla gameplay, built around a high-activity spawn with high amounts of Player versus Player, The server is primarily built around a player driven loop of fighting, raiding and base building. I worked across both development and operations, building and maintaining the server’s custom plugins and backend systems, shipping features and fixes, as well as handling performance & reliability, to keep the experience smooth.

Vanilla+ (vanillaplus.net) was a large scale Minecraft server focused on competitive 'Crystal PvP' while staying close to vanilla gameplay, built around a high-activity spawn with high amounts of Player versus Player, The server is primarily built around a player driven loop of fighting, raiding and base building. I worked across both development and operations, building and maintaining the server’s custom plugins and backend systems, shipping features and fixes, as well as handling performance & reliability, to keep the experience smooth.

Category

Category

Minecraft

Minecraft

Services

Services

Operations and Software Engineering

Operations and Software Engineering

Client

Client

Vanilla+

Vanilla+

Year

Year

2022 - 2026

2022 - 2026

Plugin development

Vanilla+'s plugin stack was a mix of off-the-shelf tools and custom Java work built on top of them. Over the three years I wrote several plugins from scratch and consolidated others into VanillaPlus-Core, a single plugin that handled a growing list of server-specific features rather than scattering them across separate jars.

The more interesting projects were the ones that solved specific operational problems. A custom LiteBans extension intercepted /unban commands before they reached LiteBans, queried the punishment database to check whether the active ban was filed under the blacklist template, and rejected the unban if it was, preventing staff from accidentally or intentionally clearing permanent bans that were supposed to stay permanent. Another plugin I designed logged every item transaction and flagged patterns that matched known duplication exploits, integrating with a Discord bot to stream live detections into specific (category based) Discord channels rather than dumping everything into one feed.

The competitive advantage of writing your own plugins over configuring someone else's is that you understand exactly what runs every tick. When something breaks at peak hours, you're not guessing at what a closed-source plugin might be doing.

Performance work

Crystal PvP servers generate a specific kind of load: high player density in a small area, constant combat, huge farms, lots of entity spawn and despawn events and players connecting from anywhere between 5ms and 200ms latency. Vanilla+ ran everything on a single instance, which meant there was no sharding to fall back on when things got slow, the only options were configuration, code, or both.

Most investigations started with spark profiler reports. The recurring pattern was something behaving badly at scale that wasn't visible at lower player counts. Configuration adjustments handled the straightforward cases. The ones that required more work I fixed by forking the plugin and rewriting the specific path that was causing problems, keeping the original behaviour while cutting out the cost. Not every bottleneck had an upstream fix available and waiting for a maintainer to respond wasn't always an option when something was actively affecting server performance.

Increasing revenue

The biggest revenue contribution during my time was designing and shipping the 'Legend Token' system, which went from zero to 50% of the server's total revenue and was central to scaling annual turnover from $15,000 to $135,000 in a 12-month period.

Legend Rank is Vanilla+'s paid subscription at $14.99 for 30 days. It gives players access to queue priority when the server is full, a gold name in the tab list, RGB chat colours amongst various other desirable perks, without being pay-to-win. It's the server's primary source of monetisation.

I discovered that players were already trading Legend Ranks for in-game items informally, someone would agree to buy a rank for another player in exchange for gear, but there was no safe way to execute the exchange. Either side could take their half and disappear. Legend Tokens made the rank itself a transferable in-game object: a player buys a token from the store, hands it over via /trade alongside whatever was agreed, and the recipient redeems it for a 30-day Legend Rank via /redeem. Both sides of the deal happen in a single atomic transaction.

The system also had a secondary effect on revenue: paying players now had a reason to buy tokens beyond their own use. A token held in-game value, it could be traded for items, so a player might pick up extras to sell. This drove repeat purchases outside of just recurring subscriptions.

Operations and my broader role

Beyond the development and firefighting there was a lot of work that doesn't show up in a commit history. Monitoring was handled through Grafana dashboards aggregating server metrics alongside Atlassian Statuspage for player-facing uptime reporting, plus custom tools that pushed alerts to specific Discord channels. Running hundreds of data points across player retention, tick times, I/O and memory, meant that most issues surfaced as anomalies in the graphs before they became visible to players.

The operational leadership side involved prioritising what got built, translating player feedback from the Discord and in-game reports into development decisions, writing release notes and staff documentation and coordinating updates, without disrupting the live server. The 30,000 member Discord was where I would deliver announcements, changelogs, event posts, writing clearly and quickly was its own skill separate from the technical work.

What I took from it

Three years on one server long enough to watch it change is a different experience from project work. You accumulate the history of why a particular config value is what it is to which player is going to test every new feature by trying to break it. That context has limits too: it's easy to keep patching around a system that should have been replaced.

The performance investigations are what I'd point to most. Reading a spark report and finding the thing that's actually costing the server valuable performance. That carries over to any system where production behaviour doesn't match what you'd expect from reading the code.

I left in April 2026 to build Vanilla X, a Crystal PvP server of my own.

Let's talk

Time for me:

Email:

me@sammy.dev

Socials:

Reach out:

© Copyright 2026

Let's talk

Time for me:

Email:

me@sammy.dev

Socials:

Reach out:

© Copyright 2026