BetterMultiThreaded
Folia-based server software for Minecraft 26.2 and 26.3 that also splits your busiest region across every CPU core.
Folia gives every region its own thread. BetterMultiThreaded keeps everything Folia does for spread-out players and adds the one thing Folia cannot do: parallel ticking inside a single region. The town, spawn or event area that everyone crowds into stops pinning one CPU core.
- Built on
- Folia
- Minecraft
- 26.2 → 26.3
- Java
- 25
The problem with a busy town
Folia can only split the map where players are far apart. A town, spawn or event where everyone stands together stays one region, and one region runs on one thread.
| Paper | Folia | BetterMultiThreaded | |
|---|---|---|---|
| World ticking | 1 main thread | 1 thread per region | 1 thread per region + a shard worker pool |
| A crowded town or spawn runs on | 1 core | 1 core | every worker core |
| Parallel ticking inside one region | — | — | 8–64-chunk shards |
| Switches on by itself under load | — | — | player count + MSPT, with hysteresis |
| In-game controls | — | — | menu, wand, split button in /tps |
| Region split | n/a | rebuilds every piece | largest region stays, only the part that left moves |
| Far-mob AI throttling (DAB) | — | — | built in |
| Async mob spawning | — | — | built in |
| Plugins | all Paper plugins | Folia-ready plugins | Folia-ready plugins |
What’s inside
Multithreading
- Sharded region ticking — cuts a busy Folia region into 8–64-chunk shards and ticks them on a worker pool. The region thread joins in as a worker.
- Automatic mode — turns on when a region passes your player and MSPT thresholds and turns off when the crowd leaves, with hysteresis so it does not flap.
- One-click control — an in-game menu, a selection wand, a whole-world mode and a split button next to every region in
/tps. - Region scan — finds your laggiest regions and turns them into permanent sharded zones.
- Incremental regioniser — the largest region survives every merge, and a split moves only the part that left.
- Work-stealing scheduler — waiting and idle threads take over regions that are running late.
- Parallel housekeeping — chunk ticket purge, entity activation, entity schedulers and shard-safe packets run inside shards instead of on the serial path.
Per-core savings
- DAB (Dynamic Activation of Brain) — far-away mobs think less often. Mobs near players behave as before.
- Async mob spawning — the spawn count runs off the tick thread (a Pufferfish port).
- Tick micro-optimisations — a random-tick section mask and an equipment-change cache.
- Per-hopper mode — keep one hopper clock fully vanilla while the rest of the server uses your fast hopper settings.
How each part works is on How sharding works.
Tested with real data
Every number in these docs comes from our own servers: a live Towny network with 400+ players online, and stress runs with 150–200 bots on a copy of the live map.
- Crowded region, 151 players, ~7,400 entities: 90.2 MSPT (~11 TPS) → 14.6–15.4 MSPT (20 TPS)
- Packed spawn, 151 players inside 100 blocks: 22.8–25.2 → 15.8 MSPT
- Spread-out town, 99 players over 1,100 blocks: 25.0 → 11.8 MSPT
- Peak run: ~195 players, ~25,000 chunks and ~7,500 entities in one region → 15.5–16.7 MSPT, 20.00 TPS
The charts and how they were measured are on Benchmarks.
Who it’s for
- Large networks — Towny, SMP and survival with 200–500 players. Folia’s regions keep spread-out players fast; sharding takes care of the town everyone crowds into.
- Small servers — one spawn, one hub, one event area. Even a 648-chunk spawn gets split across cores, and every core does less work per tick.
Next steps
Start with Installation, then run /tps and read How sharding works to see what the server is doing with your busiest region.