Minecraft anticheat guide
FairPlay Folia-Safe Anticheat Design for Threaded Servers
Understand scheduler ownership in FairPlay’s Folia-aware design and plan a staging check for the server setup you operate.
Folia changes the threading model
Folia does not behave like a single global main-thread server. Entity work, region work, global server work, and asynchronous work have different ownership rules, and a plugin that only declares a flag without respecting those rules is not truly Folia-safe.
Folia uses separate region and entity schedulers. Check the FairPlay and dependency requirements, then test the server workflows you rely on with your exact Folia build.
Ownership examples: which work belongs where
PacketEvents callbacks decode wrappers, update packet-safe state, run math, and cancel illegal packets when appropriate. Everything that touches owned server state moves to its scheduler: player mutation to the entity scheduler, block and chunk access to region-owned context, server-global actions to global context, and file or network work async.
This boundary keeps detection portable across classic Bukkit, Paper, and Folia assumptions — visibility on the packet side, authority on the scheduler side.
| Work | Owner | Why |
|---|---|---|
| Player mutation and teleport or setback paths | Entity scheduler | Entity state is owned per-entity on Folia |
| Block and chunk access, scaffold geometry | Region-owned context | Chunk data lives under region threading |
| Server-global actions and punishment commands | Global context | Global state must not run on a region thread |
| Log writes, model I/O, webhook delivery | Async | Blocking I/O must stay off server threads |
What server owners should verify
Verify the exact Folia build, PacketEvents version, hooks, and custom plugins. Test combat, teleport, velocity, block placement, inventory, and punishment commands before production rollout — Folia support is a real engineering behavior, not a checkbox.
Record which scheduler path each tested action used. A flag without an ownership review is not Folia evidence, and descriptor text alone never substitutes for a runtime result on the deployed build.
FAQ
What should I check before using FairPlay on Folia?
Check the plugin requirements, PacketEvents setup, and your exact Folia build, then test your server workflows in staging.
Is folia-supported true enough?
No. Correct scheduler ownership is still required for entity, region, global, and async work.