Folia support. Plugin now runs on Folia servers (regionised multithreading fork of Paper) without throwing UnsupportedOperationException from the scheduler or sync teleport.
folia-supported flag.folia-supported: true added to plugin.yml so Folia loads SafeSpawn without the unsupported-software warning.
SchedulerAdapter abstraction. Detects Folia at runtime via class probe and routes work to the correct scheduler:
Delayed per-player tasks → Player#getScheduler().runDelayed(...) on Folia, BukkitScheduler#runTaskLater elsewhere.
Essentials command dispatch → GlobalRegionScheduler#execute(...) on Folia, direct dispatch elsewhere.
Player teleport → Player#teleportAsync(Location) on Paper/Folia, sync Player#teleport(Location) on plain Spigot.
✦ Changed
TeleportService routes all scheduling and teleporting through SchedulerAdapter instead of calling BukkitScheduler and Player#teleport directly.
✦ Compatibility
Drop-in replacement for v1.2. No config changes.
Same jar runs on Spigot, Paper, and Folia. Folia classes accessed via reflection — still compiles against plain Spigot 1.18.2 API.
Spigot/Paper behavior identical to v1.2. Folia class probe fails → original code paths.
On Folia, EssentialsX is not officially Folia-compatible. If Essentials throws when invoked, SafeSpawn falls back to custom-location (same fallback policy as before).
Download the jar and drop it in plugins/. Restart or /safespawn reload is not enough — full restart required for the new flag to take effect on Folia. — zArrowTan