Direct answer
Folia does not have one universally safe Bukkit main thread. Events and scheduled tasks can run in separate owning regions. A plugin written for Paper may load only after it declares Folia support, but the author must also handle thread ownership and shared mutable state correctly.
How to check it
- Check whether the developer explicitly supports your precise Folia build and whether required dependencies do too.
- Look for region-thread violations, race conditions, unexpected entity access and plugin data inconsistencies in server logs.
- Test dangerous operations such as teleportation, inventories, cross-world updates, saves and NPC interactions on a non-production copy.
What to change
For a developer-maintained plugin, the manifest declares compatibility, but it must follow correct schedulers and thread rules:
folia-supported: trueUse region scheduling for location data; entity scheduling for entities that move; global scheduling for global state; asynchronous scheduling only for tasks without unsafe world/entity API access.
Do not “fix” compatibility by simply adding the flag to another developer’s JAR or suppressing thread errors.
Shared plugin maps or caches may need synchronization, but locking alone does not make arbitrary cross-region world access safe. Check API changes on the exact Paper/Folia version.
Software and version notes
These are Folia architectural and API concepts; test against the exact Folia and Paper API build you deploy. Do not apply generic Paper single-thread assumptions.
Verify the result
Exercise two distant player areas simultaneously and confirm inventory, block and entity operations behave correctly with no cross-thread errors.