Peaceful Vanilla Club Blog

Almost Everything Changed, and Most of It Looks the Same

A programming trance produced stable TPS, new plots, configurable ore veins, rebuilt pets, a grown-up Orwell, and plans for the Gendarmerie.

  • Patch Notes
  • Announcements
The vast Peaceful Vanilla Club spawn seen from far away at sunset with Distant Horizons

I have had far too much free time.

PVC has been growing, the server has felt unusually alive, and apparently my response to good news is to lock myself in front of a computer and start crossing things off a to-do list until I can no longer remember which things were on the list in the first place.

I crossed off old jobs. I added new jobs. Then I crossed those off too. At some point this stopped being a productive week and became a programming trance.

The strange part is that a large amount of what I did is intentionally invisible. Several systems have been rewritten from zero only to look exactly the same to you. Even this article only covers some of them. A few rewrites are not mentioned at all because, from a player's point of view, their only visible feature is that everything still works. That is not because I enjoy doing the same work twice, although the evidence is beginning to suggest otherwise. It is because I want PVC to be ready for a much bigger change.

The Folia-shaped future

Minecraft servers have historically been trapped behind a fairly horrible bottleneck. You can own a powerful machine with a very good CPU, a heroic amount of memory, and more cores than you know what to do with, but most of the game still depends on a tiny number of very busy threads.

Our machine has an Intel Core i9 and 64 GB of RAM. It is not weak. The annoying part is watching most of that hardware sit around doing very little while one part of the server has to calculate nearly everything important.

This is why I want to move PVC to Folia, PaperMC's regionized multithreaded server software. Folia groups nearby loaded chunks into independent regions and can tick separate regions in parallel. For a survival server where players are spread across a huge world, that is the kind of real multicore processing I want.

It is also why this migration is difficult. Folia does not have one traditional main thread that every plugin can casually assume exists. Existing plugins need to respect which region owns a location or entity, and a great many systems need to be rewritten before I can trust them on a live world that has existed since 2019.

That has been the hidden theme of this update. I have been rebuilding old systems so they can behave as they always did while also becoming ready for Folia.

The lag is fixed. I am still not satisfied.

We have not moved to Folia yet, but I did move PVC onto an intermediate setup that can shift a few secondary jobs, including parts of entity tracking and world saving, away from the main thread.

That change was only one part of the work. I also spent an unhealthy amount of time tuning the Java Virtual Machine, memory management, the garbage collector, entity activation, loading distances, and several custom anti-lag systems.

The result is not theoretical. The TPS problem that followed our recent growth is fixed. PVC now holds 20 TPS with around 80 players online.

That is a very good result, but it is not the end of the story. This setup reduces the pressure on the main thread; it does not turn the whole server into a genuinely multicore simulation. Most of the CPU is still waiting around while Minecraft makes one part of it do the hard work.

Some of the current stability also comes from compromises I do not love. Entity-loading ranges have been tightened. You may have noticed that maps and item frames now disappear when you are not close to them. The Map Art Museum can look like a collection of empty walls until you walk directly in front of the exhibits.

Not even the worst short-sightedness is this severe.

So yes, the lag is fixed. No, that is not enough for me. I still want Folia, proper multicore use, and enough spare room to relax those ugly loading restrictions later.

A queue with a less cursed interface

The queue system has also been updated. I was not happy with the previous implementation, so it now has a new interface and a more stable foundation.

There was a bug after the update that prevented some players from being placed into the queue. I identified a few likely causes and applied fixes. It looks solved, but it still needs a proper test, so consider this the honest version of the patch note rather than me declaring victory too early.

One plot system instead of two

Plot rentals used to be split between two unrelated systems.

Advanced Region Market, usually called ARM, handled the larger plots in Cobble Town. A much smaller custom system handled pixel-art spaces around Spawn Island and a few other rentable regions. ARM could do almost everything imaginable, which was precisely the problem. It was complicated, heavy, and full of advanced features we did not need. My custom alternative was pleasantly tiny, but too limited and not compatible with Folia.

So I built a third system. Naturally.

The difference is that this one replaces both of the old systems. It is lighter and simpler than ARM, more capable than our original custom plugin, compatible with Folia, and able to import data from both previous databases.

It is already live for everyone and has been announced on Discord. Existing plots were imported, and I have not received reports of properties disappearing during the migration. Your owners, members, and rental data should all be where you left them.

An available Cobble Town plot beside its rental sign

One of the Cobble Town plots waiting for somebody to rent it. Right-click the sign twice if you want it.

The new system also includes automatic renewal. The code is in place and should finally solve the auto-renew problems people had before, although I am waiting to see a real renewal complete before I carve that promise into stone.

You can now manage a plot without physically standing inside it. Add -r <region> to the end of a command, or use -r <world>:<region> when the same region name exists in more than one world.

Plot command crib sheet

  • /plot info [-r <region>] shows ownership, payer, price, expiration, and renewal status.
  • /plot autorenew <on|off> [-r <region>] enables or disables automatic renewal.
  • /plot trust <player> [-r <region>] and /plot untrust <player> [-r <region>] manage WorldGuard members.
  • /plot member list [-r <region>] lists members and member groups.
  • /plot owner list [-r <region>] lists owners and owner groups.
  • /plot owner add <online-player> [-r <region>] adds an equal owner.
  • /plot owner remove <online-player> [-r <region>] removes an owner. The payer and final owner cannot be removed.
  • /plot payer info [-r <region>] shows who will pay future renewals.
  • /plot payer set <online-player> [-r <region>] proposes transferring future payments to another direct owner.
  • /plot payer accept [-r <region>] and /plot payer decline [-r <region>] answer that request.
  • /plot flag <flag> [value...] [-r <region>] runs the equivalent WorldGuard flag command without bypassing WorldGuard permissions.
  • /plot leave [-r <region>] starts the release process, and /plot confirm [-r <region>] confirms it.

To rent or permanently buy an available plot, right-click its sign twice.

Ores have remembered how to be veins

PVC has used custom ore generation for years. As you mine, naturally generated ores around you are removed and replacement ores are inserted dynamically. That gives us control over the economy and makes ordinary X-ray resource packs much less useful.

It is why emeralds can be found at every height and are much more common here, while diamonds are deliberately much rarer.

The old system was brutally simple. It mostly rolled a chance and placed an isolated ore block somewhere near a player. It worked, but it did not feel like mining through a naturally generated world.

I have now rebuilt that part of the plugin so it can generate proper connected veins. Calculating them dynamically without making a mess was much harder than placing lonely cubes, but the new system is installed and active.

Not every mineral follows one permanent rule. Veins, placement, rarity, and distribution depend on the ore and the current configuration. I expect to adjust that configuration regularly around events and the state of the economy. The purpose is not to publish one eternal percentage table; it is to let us keep resources interesting and under control as the server changes.

Decorative emerald, gold, iron, and diamond ore displays inside the Spawn Quarry

These are decorative ores at the Spawn Quarry, not veins generated by the new system. You will have to go underground and find those yourselves.

Stable Master has been replaced without stealing your animals

Stable Master was one of the oldest pieces of software on PVC. It managed animal ownership so another player could not casually steal or kill a claimed pet.

It was also ancient, abandoned, and increasingly unaware that Mojang had spent the last several years adding creatures to Minecraft.

I finally rewrote it from scratch. The replacement is live for everyone, understands the old database, and preserved all existing animal ownership. Your pets did not become ownerless during the migration.

It also supports newer mobs that Stable Master never learned about, including creatures such as striders and happy ghasts. The server has changed quite a lot since that old plugin was written. The protection system has finally caught up.

A tameable happy ghast floating inside the Peaceful Vanilla Club Nether Hub

A happy ghast floating through the Nether Hub. The replacement pet system can finally understand and protect newer companions like this one.

The rewrites you were not supposed to notice

Several other systems have been completely rebuilt even though their ideal player-facing patch note is simply: nothing broke.

The villager Shopkeepers system was rewritten while keeping existing shops compatible. The AFK-query system was rewritten. Several anti-lag tools were replaced or expanded. We now have much stronger ways to identify what is causing a slowdown, keep it monitored, and intervene without treating the nearest innocent player as the source of all evil.

Orwell used to become rather brutal during lag. Moving quickly in a boat or standing near a farm could be enough to get kicked because the bot saw an alarming number and chose violence.

That should no longer happen. The new systems are more measured, more aware of context, and much better at helping us find the actual cause.

Orwell has finally hit puberty

This may be the most culturally important change in the entire post.

After about six ridiculous years, Orwell has left beta. Our bot mascot has reached puberty.

The name Orwell Beta is gone. He is now simply Orwell, still wearing his special bot tag in chat and currently running version 0.7.0.

The joke is that this Orwell is not really the old beta graduating. It is a completely different system that I rewrote from zero. Technically, that should probably make it an even newer beta. I ignored that detail because removing the word was a much nicer way to announce it.

And no, despite it being 2026, Orwell is not an LLM. He is not connected to OpenAI, Anthropic, or the servers of any other evil company. He remains a relatively simple and occasionally stupid chatbot that uses patterns and conversation context to choose an appropriate response.

I did briefly test an experimental Orwell GPT without announcing it. It used OpenAI models and tried to answer players using information from the PVC Wiki. It was slow, hallucinated enthusiastically, said a great many stupid things, and managed to feel less useful than Orwell Beta. It never became a real feature.

The current Orwell has more practical tools. He can tell you the time, report the weather, and answer many more frequently asked questions. Type ##faq to see the available double-hash topics.

There is a small confession attached to that FAQ library. I did use AI to help turn the enormous PVC Wiki into the first draft of many answers and messages. I did not want to manually write an infinite Bible of FAQs. I scraped our own Wiki material, used it to generate the corpus, and then tried to curate it carefully enough that Orwell would not spend his days spraying AI-flavoured slop into chat.

He has already received three quiet updates since leaving beta, mostly to reduce false positives.

Orwell snitches. Orwell does not judge.

Orwell now contributes to anti-cheat and novice monitoring, but this needs a very important explanation.

He does not ban anyone. He does not kick anyone. He does not decide that somebody is guilty.

He snitches.

If Orwell notices behaviour that may deserve human attention, he posts a warning in chat where everybody can see it. A new player opening a chest filled with rare materials, using an elytra, accessing an ender chest, or carrying a lava bucket can trigger that kind of warning.

None of those actions proves theft or cheating. They are merely unusual enough for a novice that a human may want to look at the context. Orwell's job is to ring a small alarm bell, not to act as judge, jury, and executioner.

This leads to something we are considering for the future.

The Gendarmerie

Our moderators are fantastic. They volunteer their time, help players, investigate problems, and keep PVC from turning into a smoking crater. Their work has shown how much PVC depends on people who care enough to intervene when something goes wrong. The next experiment takes that responsibility in a different direction.

We want to begin a transition toward a community self-moderation model called the Gendarmerie.

No, this is not a public vote-ban button. No, Orwell will not start automatically banning everybody he finds suspicious.

The idea is to let a small group of trusted players, selected by zDavidMeson, help investigate situations that happen while they are already playing. They will not receive creative mode, teleportation, a visible rank, or ordinary staff powers. They will remain normal players, quietly in plain clothes, with one narrow role: taking part in a group vote on whether to start a temporary-ban procedure against somebody who appears to be actively harming the server. No single gendarme can trigger a temp ban alone. It happens only when the group reaches the required agreement.

An administrator or owner will still make the final decision to release that player or turn the temporary action into a permanent ban. Gendarmes will be responsible for what they do, and abusing the system will have consequences.

This is a future system, not a permission we have quietly handed out already. Its exact safeguards still need to be finished, and I will explain them properly before it goes live.

Terra2 may go first

The Gendarmerie will probably begin on Terra2.

The Terra2 spawn beneath a monumental rearing horse statue

Terra2's spawn. The smaller world will probably be the first place where we test the Gendarmerie.

We lowered Terra2's playtime requirement from Senior to Member. That brought new life and new players into the world, which was the point, but it also brought some griefing problems. Terra2 is small, lovely, and slightly fragile. Its regular players are often the first people to notice when something is wrong.

A small group of trusted Terra2 players could help protect it until zDavidMeson is available to make the final call.

I am also considering moving the ordinary requirement back to Senior while adding an invitation system. A trusted person could vouch for somebody and let them enter earlier. That would require a proper model for trust, invitations, and accountability rather than a command I invent at three in the morning.

That is a subject for the next post. This one is already becoming a small book.

Something for the newsletter pioneers

If you are one of the first people following PVC through the newsletter, I want this edition to include something special: a unique in-game collectible for the pioneers who were here at the beginning.

I am not telling you what it is yet.

The item will be claimable once per eligible subscriber. It is meant to be a small piece of PVC history rather than an ordinary pile of currency. Future editions will usually use newsletter tokens that can be exchanged for different rewards, but the first collectible should remain its own little artifact.

If this edition reaches you through the newsletter, open the article from that message. The panel above will reveal your private one-use code. Copy it and enter /pvcreward CODE in game. The first successful claim binds it to your Minecraft account, so it cannot be passed around or used twice.

Whether you arrived through the newsletter, Discord, or somebody dropping this enormous post into chat, thank you for reading. If you made it this far, you clearly care about PVC almost as much as I do.

I am going back to the to-do list now. It has unfortunately started growing again.