Skip to content

ServerBooster v26.1.10 — Full Folia Support

Latest

Choose a tag to compare

@SrCodexStudio SrCodexStudio released this 08 Sep 18:45
43c8519

This release makes ServerBooster run cleanly on Folia. It resolves the console errors reported on Folia servers, and it changes nothing about how the plugin behaves on Paper, Spigot or Purpur.

Fixed: console errors on Folia

Reported on a Folia server: a repeating flood of Cannot read world asynchronously and Accessing entity state off owning region's thread, thrown several times per second.

What was happening. Folia splits every world across many region threads, and the rules are strict: the global thread may not read a world or an entity at all, and a region thread may only touch the chunks and entities it owns. ServerBooster ran its periodic work on the global thread and then read blocks and entities from there, which Folia rejects outright.

Investigating that turned up a deeper cause than the two errors in the report: the plugin's internal helper for "run this on the server thread" also hopped to the global thread, so every module that used it to read an entity was affected, not just the two that happened to be logging.

Modules repaired for Folia

These now do their work on the thread that actually owns the target, so they run on Folia with full functionality:

  • Hopper Optimizer — its hopper registry was already grouped by chunk, so each chunk's hoppers are now handed to the region that owns them: one hand-off per chunk, not per hopper
  • Redstone Tick Limiter — queued updates are grouped per worldir owning region
  • Item Holograms — the merge scan and death-drop glow run on the thread owning the item, and natural despawns are now detected through a real event
    instead of a periodic lookup
  • Chunk Block Limiter — every block and tile-entity scan checks ownership first
  • Elytra Optimizer — the firework cooldown is applied on the thread owning that player
  • Entity Limiter — spawn and breeding limits work normally, since Folia fires those events on the owning region

One subtle case worth calling out: a hopper on a chunk border pushes into the next chunk, and a block update spreads physics outwards. Owning the centre
chunk is not enough for either, so those checks now confirm ow. A hopper straddling a region boundary is left to vanillarather than handled incorrectly.

Modules that report themselves unavailable on Folia

Some features are built on scanning an entire world at once, which no single thread on Folia is permitted to do. Rather than fail quietly or spam the console, they now show as unavailable in the module menu with the reason stated:

Chunk Optimizer

  • Ground Item Cleaner
  • The Entity Limiter's age sweep only — its spawn limits stay fully active

Commands that would have to walk a world (/sb count, /sb check, /sb detect, /sb clean, /sb restoreai) now answer with a short explanation instead of throwing.

Mob AI self-healing still works on Folia. It keys off chunk loading, which Folia fires on the region that owns the chunk, so a mob left frozen by an earlier Paper session is still returned to vanilla as its chunk comes in.

Also fixed on Paper

The Villager Optimizer was reading a villager's validity, profession and position directly from a background thread. On Folia that was an outright violation; on Paper it was a race condition that had simply gone unnoticed. It now takes a single consistent snapshot on the server thread, which also removes two of the three thread hand-offs it used to make per villager.

The Item Holograms merge scan had the same problem and got the same treatment.

Compatibility

  • Paper, Spigot and Purpur from 1.17 through 26.x — behaviour cheduling or latency
  • Folia and Folia-based forks
  • Java 17+
  • The Web Dashboard remains EXPERIMENTAL. On Folia it reports TPS, memory and module figures normally; per-world entity and chunk counts read as zero, since no thread may collect them.

Upgrading

Drop in the new JAR. No config changes are needed, and nothingia, open /sb gui after starting to see which modules are active and which stand down on that platform.