How not to run a Minecraft Server. [The ...

How not to run a Minecraft Server. [The LatteCraft Dev Post]

Mar 08, 2025

image

Since they started in 2017, I’ve been addicted to the Hypixel Dev Blog, and I’m not even a (frequent) Hypixel player. I have always valued the idea that sharing information stops people making the same mistakes, and makes everyone’s projects better.

As much as I preach this, I have never gone into proper detail on my biggest (public) project to date; LatteCraft. For those who don’t know, LatteCraft was a competitive economy multiplayer Minecraft server with a cash PrizePool that I ran over two(ish) seasons from 2021-2023. In this post I will be telling the story of LatteCraft from behind the scenes and give some insight on how I ran the server, and the eventual collapse of the server.

The Origins.

Who are you and what the fuck is LatteCraft?

Firstly, I’d like to answer these two questions. To start, Hi! I am CJ, or as I’m known online, OhItsHammy (Hammy is fine). I am currently a 21-year-old Information Systems student, from the South Island of Aotearoa, New Zealand.
In 2020, during lockdown, I launched a Minecraft SMP for me and my friends, called the HamSMP (later HammySMP). This small server originally only had 22 whitelisted players, and was just for shits and gigs. The SMP died off after lockdown first started getting lifted, and so that was the end… for a month. From March 2020, to December 2021, HammySMP went through 4 ‘seasons’ or 4 different versions of the server with different worlds and plugins/mods.

image
The idea of a competitive economy SMP had been planned since 2021, but hadn’t been executed.
Disclaimer: I no longer own the hammy.xyz domain and have no idea what the intentions of the current owner are.

One of the original 22 had asked from some time during Season 2 for an economy server. I said sure, and so HammySMP Economy was teased, lots. In fact, Jacob (the OG player) had asked me very consistently right up until the first LatteCraft teaser came out. HammySMP Seasons 1-4 were run out of the community I had built from my personal discord at the time, HamHub. Seasons 1-3 were very small, just my friends and some of their friends, it wasn’t until Season 4 that I started trying to build a larger community and monetise the server (to meet costs).I will also mention here that at one point I was spending $50 a month on a modded server that I think only 5 people played.

image
The initial version of LatteCraft. Note the dates (was planning a 2 month Season 4, and was running a Modded Server and classic SMP at this time).
Disclaimer: I no longer own the hammy.xyz domain and have no idea what the intentions of the current owner are.

HammySMP Season 4 ended with a pretty messy break up I went through, which split my friend group at the time (the power of the tongue). Anywho, this also ended the HammySMP/HamHub discord server and as a result, the community I had slowly built dissolved.

Development and Launch

Initial Planning

As HammySMP Season 4 came to an end, I had this gut feeling I wanted to do something more. So I decided I will create a proper competitive server, prizepool and everything.

The plan for LatteCraft started in October 2022, some players had kept playing past the drama, and I wanted a smooth transition from the server to LatteCraft. I decided the last day of HammySMP would be the 10th of December (2021). At this time, I had a very rough plan for LatteCraft: Set Lives, Economy, PrizePool, Competitive Baltop.


On 10th of December, I shut down HammySMP, and all 6 remaining players said goodbye.
Disclaimer: I no longer own the hammy.xyz domain and have no idea what the intentions of the current owner are.

Over December/January, myself, and my new girlfriend Em, worked very hard on testing and making the best server possible. I also invited three long-time friends to help; Broox, my internet friend since 2014, Soot, a friend from high school since 2018 (and the person who originally suggest LatteCraft as a name), and finally Moo, someone I met on a Discord server in 2016 who ended up living way too close for comfort. I personally did ALL the development work on LatteCraft, as well as configuring for off-the-shelf plugins we used. Em and Moo are both super talented builders and Em created the initial spawn, with Moo creating some of the seasonal versions.

While developing the initial server, I kept a few things in mind: Growth, Accessibility, and Experience (GAE).
Growth: The server needed to support 50 players easily. As in, all in different chunks loading redstone farms, because this was an economy server, people will be making money.
Accessibility: Every feature on the server both needed to be easily accessible to people playing on potato’s, but also so that after 3 months, the server still feels fresh and competitive, even for new players.
Experience: People need to have fun, and want to invest in the server. I am personally strictly Anti-Pay2Win, and even without the EULA I would never allow P2W items on my servers. So the experience needs to be worth paying for only cosmetics or donations.

Branding

I mentioned earlier the LatteCraft brand name was suggested by my friend Soot. I wanted to make sure the server was completely seperate from my name. This was partially a result of DreamSMP, which had inspired hundreds of people to make SMPs based on themselves, and I hate being the centre of attention. HammySMP was only called HammySMP because of the “Ham’s SMP” -> “HamSMP” -> “HammySMP” pipeline.
When deciding a name, I wanted it to roll off the tongue nicely, not already exist, and be unique enough so people remember it. CoffeeCraft was one of the first suggestions (an ode to my love of coffee), however the domain craft.coffee was taken, and I didn’t want a super long IP. Soot’s suggestion of LatteCraft was great, as I could use lattecraft.coffee as a domain. I bought the domain immediately and paid someone on Fiverr.com, a freelancing website, to create a logo.

image
I used the Fiverr Freelancing site to have branding made. Huge shoutout to Elshaddai Missio!

After the initial branding was done, I quickly made sure I could get the @lattecraft or @lattecraftserver handles on major social media platforms. I went through Twitter(X), Twitch, Instagram, Facebook, and TikTok, however I would also get YouTube and Discord now they have @‘s.
I already had access to a dead Minecraft server’s twitter account, so I quickly changed the account handle to LatteCraft. The account had like 4 followers, but it already used the email address I was planning on using, so it was transformed to be LatteCraft. A quick scrub of the tweets and branding and all was good to go.
The original plan was to close HammySMP S4 on December 10th, and open LatteCraft on the 14th, however I knew by early December I couldn’t launch a competitive, commercial server in this capacity. This resulted in the launch being pushed out until February 1st/2nd.

Plugins: Custom vs Off the Shelf (OTS)

If a player was to run /pl on LatteCraft. They would only see one plugin: “LatteSuite by Hammy” with a version number. The reason I did this was to not only hide the plugins from players (required in a competitive setting where knowing plugin exploits could lead to a competitive advantage), but to let me ensure versioning stayed consistent across the test server and production server. If you are doing this, make sure you actually update the version when you make changes.

Personally I don’t have a problem with using OTS plugins, as long as they were open source. I needed to be able to fix bugs faster than plugin developers. In fact, very little of LatteCraft’s plugins were truely custom, most were modified versions of ones from Spigot. This meant that if a feature broke, normally it wasn’t because of me, which is a good feeling when troubleshooting. I only caused the big breakages (more on this later).

When it comes to generating money, I went with CraftingStore, as it is cheapest and honestly, the support is top tier.

Testing and Launching a Server

I’ve been privileged enough to have grown up on the family farm and have learnt a fair share of the tools of the trade. One of the most well-known tradie phrases is “Measure Twice, Cut Once”. In programming, we have a similar standard of work, always have a testing server and a production server. Don't test in production.

There are many ways to set this up, but for me, I used two Identical VPS’s, with the test server having a script ready to run to just copy the current state of the production server.

image
Buying me a Latte directly supports me and my work. Your payment is secured by Stripe, so you don't need to worry about your privacy. I would really appreciate it if you bought me a coffee at any time as it gives me more time to focus on my projects rather than working for others!

When it comes to actual release, I allowed a 3-day beta access period to allow some real-world testing., It was important not to roll out too many updates, as to ensure the experience was being tested. Anyone could join the Beta Tester role on Discord and then join the server early. After 3 days, and two minor updates, the server rolled out with update 1.0!

For the rest of this blog, I’ll tell the story of the server in chronological order.

Seasons 1 & 2

Launch Day

Fuck this day, I could not fucking sleep. I was so stressed leading up to release, I told people I would re-balance the economy on release so the Beta testers didn’t have much of a bonus. A pro tip I learnt is plan how you mean to do this. There’s no magical balance button. I can’t even remember how I ended up doing the math, but I can remember manually editing the files on a live server in vim to adjust economy status.
I also announced that the final day would be announced later that month. Otherwise the first 24hrs were very uneventful, a few bugs here and there, but otherwise very straight forward, right until day 3.

The first problem.

Day 3, it’s about time I introduced a key character to the story… jerry. Jerry has been a friend of mine for 5 years at this point, very very funny guy, core member of my friend group.
Fuck Jerry.
Jerry is a troll.
Jerry found an infinite money glitch. I found out on this day after it had been heavily abused by half the server.

image

If you’re running a competitive server, turn on all debug logging options in plugins (verbose logging). I actually sorted this very quickly, my only mistake was not banning jerry.
If your friends break rules, treat them evenly.

Over the next few days there were a few updates, and on the 10th of Feburary, the first major update was rolled out (LC1.1). From the season start until now, there was only 50 unique players, and only 13 regular players. At this stage, I had lined up three streamers to play on the server, however streamers are famously difficult to get to commit to things, and the only streamer who ended up signing a contract by this stage was Gutsluvr. Who went live at 10am on the 20th.

Growing the server.

DISCLAIMER: I want to start this part with a massive thank you to Bonnie, who at the time was going by the Gutsluvr brand. Their dedication and love to the server, and to their community, is the sole reason LatteCraft grew into what it did. I'll put a link here to their socials list, but please be aware he now has focused on making 18+ content, show them some love if you feel comfortable doing so.

The first sponsor was Bonnie (gutsluvr), Bon was originally contracted for a 3-hour stream. It ended up going for 7 hours over two days.

image
First 3 hour sponsor slot.

Marketing the server as a place for streamers to grow their community was a great idea. Not only did Bon's community fall in love with the server, but it created a place for Bon and his friends to collaborate and make content without worrying about server logistics etc.

I had very thoroughly stress tested the server leading up to release, however on the 25th it was decided that the lag bought in by the very competitive players joining from Bon's community would call for much better server hardware. This was when I moved to WinterNode. I had the server down for 2 hours intially during the transfer, and for 46 hours limited the server to 25 players to test the server some more.

On the 27th, the next major update got rolled out (1.3), which was also the groundwork for running the server as a Bungeecord network, allowing a separate events server for one-off events, as well as a queue system and player analytics system.

Having some fun.

The next few weeks were fairly uneventful, apart from a server wide event, and a few major updates including some downtime as I migrated to a separate SQL server. There were a few updates, including the additions of NFTs.

NFTs were added as a result of the crypto trend. NFTs in LatteCraft were simply image maps I generated and auctioned (in game) off for way too much, which couldn't be duplicated and contained unique NBT tags. It was one measure introduced to both balance the economy by providing useless shit for people to purchase, as well as create a clipable aspect to the server.

imageAdding 'NFTs' created easy funny/shareable moments. Twitch/ZomBonn

The server continued to steadily grow, and clips began to be shared of the moments on the server. The next notible event was the 1.18.2 support release on 17th March.

Season One

From here, everything was mostly smooth sailing. There were a couple of maintenance periods, and a few mishaps here and there, including some notable members of the community being shown as not very nice people.

Season 1 ended on June 15th, with the winner announced shortly after. Season 2's date was to be announced on the 20th. Sir Forest, the winner, was paid out via PayPal on June 22nd, with evidence posted in the Discord. On the 24th, I finally announced Season 2, with a range of new features, including the Prizepool being double, and the introduction of slimefun.

Season 1 had ultimately been a resounding success, and I wanted to get straight into Season 2 with the momentem behind us. By the 1st of July, it was very clear Season 2 wasn't happening any time soon. An initial brand partner I had lined up pulled out, and the Minecraft community had just had it's heart broken.

image
A statement issued regarding Season 2 and it's postponement.
"Hey Everyone,

Unfortunately I've had [sic] to make the decision to postpone season 2 of LatteCraft.

Due to a number of issues with a potential brand-partner, ongoing uncertainty with 1.19.1, and a lack of time/poor mental health on my part, I wouldn't be happy releasing a server right now.

Season 1 took us 6 months to get to beta, and trying to shove S2 out in a month is not something I would be happy doing. I do a lot of the work solom abd I try to make everything to the highest possible quality, but that does take time (and I cannot afford a developer at the moment). I really appreciate the ongoing support from all of you, and I promise when Season 2 is ready, it will be better than ever."

I made a statement announcing the postponement of the server and logged off for two weeks. Regardless of anything happening in the world, Season 1 was still an amazing success, and I had learnt so much that Season 2 couldn't go wrong.

Season Two: It all goes wrong.

Season Two's development restarted on the 2nd of August, with a sponsor lined up, and still a huge amount of interest carrying over from the first Season. Development was admittedly rushed, with me taking many shortcuts to make the server playable. I had organised 5 streamers to do sponsored streams this season, so all of a sudden had contract dates to worry about.

The next season was officially announced on the 23rd, with the server opening for a 48 hour beta test, followed by a reset and launch 12 hours after beta closes. Official launch was to happen 1st September at 8pm NZT.

During the Beta, an issue was discovered where player entries on the SQL table wouldn't generate until their second time playing, meaning you were invincible to lives, couldn't make money, and couldn't interact with SlimeFun until you relogged. Now, instead of fixing this right away, I simply made it so you were forced to relog (immediately kicked on first join) and listed it as a known bug. It wasn't an optimal user experience, but I'll be honest, I was still pretty burnt out so didn't want to put more-than-minimum effort into the server at this stage.

Day 2: Lag

Lag Machines are fucking horrible. They're hard to pinpoint quickly, and often result in headaches. Naturally, there were systems in place to prevent lag machines on the server, but someone had worked out a way around this and had created quite a devastating machine.
The server remained playable, however due to the fact LatteCraft was a competitive multiplayer, I made the decision to close the server for 8 hours to try combat the lag.
After reopening the server, days 3-5 went without any issues, more updates rolled out and more players joined the network.

Day 5: Infinite Money

Let me paint you a picture, it's early September, and is mid-semester break for the University Em attends. During this break, Em is moving the remainder of their stuff down from their mother's house in the north, ready to go flatting in November after Exams. I decide to meet Em in the capitol and spend a weekend with them. This meant I had a 4ish hour ferry ride to get across to the North Island, and thought this would be the perfect time for working on some major updates for the network.
Unfortunately, someone found an infinite money glitch which was revealed to me about 10 hours before my ferry trip. As you can guess, I spent the whole ferry trip, and most of the weekend, working on this economy glitch. It ended up with a rollback of 16 hours of play, and some disappointment from the community.
At this stage, most of the server was running correctly, and after a second economy patch on day 11 and a few QOL features, the server was running quite well. So, I decided to start fulfilling those contracts with streamers.

Day 16: I got cancelled.

Okay so I didn't really get cancelled, I fell victim to a Discord bug bought on by a third-party connection that unfriended about half my friends list. At the same time, a few core members of the community were trying to get my attention and mistook my unfriending as a 'soft block'. I was at work when this happened, and unfortunately instead of contacting me directly, I was being tweeted at publicly.

This matter is resolved and (almost) everyone has apologised, but it did suck so much and I feel it had to be included.

Got cancelled lol.

Day 17: @everyone SERVER HACKED

So like... If someone gives you advice like "hey double check you've got proxy protection on your sub-servers, especially on the production node", don't ignore it.
Especially don't ignore it when you gave yourself the advice on a checklist and then immediately checked it as done even though you hadn't done it.
Long story short, I had a streamer, Nerdiella, come in and do a stream on the server.
Someone watching her content realised they could use an older exploit to join as an operator, and seriously destroyed the test server, which then rolled an update to the live server, which had 84 players online at the time.

There has been many written articles about securing servers, and I had noted that it needed to be done, but for some reason, I never did.
This hack was devastating, for two weeks no one could play, and there was a massive decline in players. Between this, DNS issues, Em being hospitalised, and someone falsely claiming my domain, LatteCraft shortly closed in November, just 2 months after opening Season 2.

LatteCraft: The Future.

I think LC has run its course. It was amazing to get to grow such a community, but brands don't want to work with Minecraft anymore, and I am now into my third year of studying Information Systems and Business IT at University.

Writing this post is sort of me just trying to close the chapter. The Discord sat dormant for almost two years, and most data I have for advertising/communications will expire at the end of March in line with privacy laws.

Growing a competitive community is super fun. Getting to work with creators is fucking awesome. I do believe I have made some lifelong friends from the server. I know this is titled as a what not to do, but there were some awesome moments with the server, and people put some real hours of their life into the game.

People put a lot of time into playing the game, which is an amazing feeling.

Just before I finish out, I'd like to just say thank you to some of the most amazing people I will ever get to meet:

Em - My partner of over three years now, genuinely my other half and the reason I wake up each day.
The Staff Team: Moo, Emily, Cactus, Miklo, Lucia, Broox, and Geno. I don't talk to you all nowadays, but I've linked Moo and Emily as I know what they're up to. You guys gave real time to the server, and I will always be thankful.
The Faithful: In no particular order; Camcam, LG, Jen, Apple, Bonnie, Forest, Fision, Haiken, Scal, Harper. There's of course more of you, but these few are the ones I had the pleasure of conversing with the most, I have linked relevant socials to those I can find.
The Musically Talented: Marvin my beloved. Please go check her out.

Thank you for reading this. If you are interested in what I do nowadays, please check out my page @ cjs.nz, and please consider tipping if you found this interesting at all. The LatteCraft Discord is archived now, wiki untouched, and the web domain points here. I don't know if I will activate the brand again, I still love coffee, and Minecraft, and making cool shit, so there's a chance.

Thank you for reading, make sure to get involved in your local politics, and speak out about things that are important to you.
With Love,
CJ.

Check me out here: Discord | Links | Tip

Ti piace questo post?

Offri un latte a CJ Sandall

Altro da CJ Sandall