
DivineMC: Building Parallel-Threaded Minecraft Servers That Scale
BX-Team/DivineMC
DivineMC is a multi-functional fork of Purpur, which focuses on the flexibility of your server and its optimization.
View on GitHub ↗Alright, so you're running a Minecraft server and you've hit that wall. Vanilla server jar can't use your extra CPU cores, chunk ticking happens on a single thread, and TPS drops the moment player count climbs. You've tried Paper. You've tuned configs. Now what?
DivineMC is a fork of Purpur that takes Purpur's legendary flexibility and bolts on parallel chunk ticking, async operations, and a bunch of thoughtful optimizations. It's got 240 GitHub stars, active development, and it approaches scaling differently than the big names like Folia.
What DivineMC Does
This isn't a complete threading rewrite. DivineMC keeps Purpur's architecture - you've got granular control over mob spawning rates, entity tracking, and miscellaneous behavior tweaks. But it adds regionalized chunk ticking, which means chunks process in parallel using your available CPU cores instead of sequentially on a single thread.
The project also includes async pathfinding, entity tracking, mob spawning, and chunk sending. All the operations that usually block the main tick thread happen off-thread. That means when 50 zombies pathfind toward a player at once, it doesn't tank your TPS.
You also get enhanced security (1024-bit seeds instead of 64-bit), support for client mods like Syncmatica and Xaero's Map without server-side mod infrastructure, and somewhere around 10 bug fixes that address various Minecraft quirks.
Why You'd Want This
Picture this: you're running a 20-30 player survival server. Growth is happening. TPS starts tanking during peak hours. You check profiling and half your tick time is chunk loading and pathfinding calculations. You've already done the standard Paper config optimizations.
At that point, parallel chunk ticking shifts from nice-to-have to actually useful. DivineMC lets chunks tick simultaneously, kind of like Folia does, but without requiring a total migration or heavy plugin compatibility testing.
It's also solid if you've got multiple worlds, a dense plugin ecosystem, or player builders uploading massive schematics. The async operations and improved region file formats mean better stability when pushing the server hard.
And this matters: DivineMC plugins are 100% compatible with Bukkit, Spigot, and Paper. You're not locked in. If you want to switch tomorrow, your entire plugin ecosystem moves with you.
How to Get It Running
First, grab a build from the BX-Team downloads page or MCJars. Pick the jar that matches your Minecraft version.
Basic startup:
java -Xmx4G -Xms2G -jar DivineMC-[version].jar noguiAdjust the `-Xmx` (max RAM) and `-Xms` (initial RAM) numbers based on your hardware. Four gigs is reasonable for small-to-medium servers. First launch generates your world and config files.
The server will ask you to accept the EULA. Edit `eula.txt` and change `false` to `true`, then restart.
Here's the key part: DivineMC is all about configuration. The defaults are solid, but you'll want to tune `paper.yml` and DivineMC-specific configs for your setup. This documentation site walks you through what's actually configurable.
If you're setting up for specific players, the Minecraft whitelist creator tool saves time. Paste your player names and it generates the whitelist format instantly.
Features That Matter
Parallel Chunk Ticking processes chunks simultaneously instead of one after another. More blocks updating at once without the main tick thread freezing. Not magic, but noticeable when you're under load.
Async Operations move pathfinding, entity tracking, mob spawning, and chunk sending off the main thread. This prevents the classic lag spike when a horde of mobs pathfinds toward your player.
Linear Region File Format is for world storage - old V1/V2 format or the new Buffered approach. Niche optimization for massive world migrations or schematic-heavy builds. Most servers won't notice, but it's there if you need it.
Sentry Integration sends error reports to a Sentry instance if you set it up. Useful for public servers where structured error tracking beats digging through logs.
Mod Protocol Support means Syncmatica, Xaero's Map, Jade, and Apple Skin clients work fine without getting kicked. Helpful if your community uses client-side mods.
What'll Trip You Up
Parallel chunk ticking isn't a magic button. You enable it, but you still monitor performance and tune it. There's no setting that just makes everything faster.
If you want to build from source (the README includes gradle commands), you need a development environment set up. For just running a server, use the pre-built jars. Source builds are for contributors patching the codebase.
Regional ticking means chunks in different regions process in parallel, but chunks within a region still tick sequentially. Dense redstone contraptions in a single chunk will still cap that chunk's TPS. The optimization helps when build activity spreads across the world, not concentrated in one spot.
One quick thing: plugin compatibility is with Bukkit, Spigot, and Paper plugins. Not with Forge or Fabric server-side mods. You can run client-side mods all day, but vanilla-derived servers don't support server-side modding environments. (That's just how vanilla-derived server software works.)
How It Stacks Up
Folia (also Paper-based) throws full multithreading at the problem - each region gets its own thread and game loop. More aggressive parallelization but requires heavier plugin testing. DivineMC is less radical and keeps Purpur's flexibility intact.
Pufferfish pioneered some of the async features DivineMC included, but maintenance has slowed. DivineMC feels like the natural evolution of that approach.
Pure Paper is simpler and way more widely used. Small server with a few plugins? Paper probably gives you 90% of the benefit with zero config overhead.
For server admins comfortable with tuning configs and wanting performance gains without ecosystem disruption, DivineMC slots in nicely between simplicity and raw ambition.
Getting Help When You Need It
The project lives on GitHub. There's a Discord server (discord.gg/qNyybSSPm5) where the community answers questions quickly. Docs are at bxteam.org/docs/divinemc.
If you want to contribute, there's a contribution guide. Java, standard server software patterns, Gradle build system. The maintainers are responsive and the community is small enough that you'll get help fast.

