Plugins for Folia servers

Folia plugin generator for regionized multithreading

Folia runs different parts of the world on different threads, and most plugins were never written for that. Choose Folia as the server type and the AI builds the plugin around region and entity schedulers, marks it as Folia-supported and compiles it.

Free to start · No credit card

Folia-compatible Minecraft plugin generated with AI on Spaleforce

No global scheduler calls

The AI is instructed never to use Bukkit.getScheduler() or BukkitRunnable, which throw an exception on Folia.

Region and entity schedulers

Work tied to a location goes through the region scheduler; work on players and mobs goes through the entity scheduler.

folia-supported: true

The generated plugin.yml carries the flag Folia checks before it agrees to load a plugin.

Compiled, errors fixed

The project is built with Maven against the Paper API. Build errors go back to the AI until it compiles.

What Folia is, in plain terms

Folia is a fork of Paper maintained by the PaperMC team. A regular server ticks the whole world on one main thread. Folia groups nearby loaded chunks into independent regions and ticks those regions in parallel on several threads. Regions merge when players come close and split again when they move apart.

The design targets large servers with many players spread far from each other, running on hardware with plenty of CPU cores. On a small server where everyone gathers around spawn, most activity lands in the same region and the gain is limited.

The catch: Folia has no single main thread. Any plugin that assumes one can break, and a lot of well-known plugins do.

Why ordinary plugins fail on Folia

Classic plugins schedule work with Bukkit.getScheduler() or a BukkitRunnable. Folia does not support those calls and throws an UnsupportedOperationException, because there is no main thread for the task to run on. A timer that works on Paper stops the plugin cold on Folia.

The second trap is thread ownership. Every entity, block and chunk belongs to the region currently holding it, and only that region's thread may touch it. A plugin that teleports a player from an async task, or edits blocks in a distant part of the world from a listener, reaches across regions and fails.

Folia guards against this by refusing to load any plugin that does not declare folia-supported: true in its plugin.yml. Adding the line without fixing the code only moves the crash from startup to gameplay.

How the Folia plugin generator writes code differently

When you select Folia, the generator gives the AI a dedicated set of rules before it writes anything. Instead of the Bukkit scheduler, the code uses the four schedulers Folia provides, each for one kind of work:

The AI also keeps every entity, block and chunk on its own region thread, hopping between schedulers rather than reaching across regions, and writes folia-supported: true into plugin.yml. The project is then compiled with Maven against the Paper API, which contains these scheduler interfaces.

  • Global region scheduler: server-wide tasks such as broadcasts
  • Region scheduler: work tied to a location, like changing blocks around a point
  • Entity scheduler: work tied to a player or mob, like teleports, inventories and effects
  • Async scheduler: work that never touches the world, such as reading or writing files

A Folia-compatible plugin, not a Paper plugin with a flag

A plugin that genuinely supports Folia is designed around regions from the start. A timer that affects every player runs through each player's entity scheduler, so it executes on the right thread wherever that player stands. An area effect runs on the region that owns the area.

Recent Paper versions expose the same scheduler APIs and run them on the main thread, so a plugin written this way can usually run on Paper as well. Spigot and Bukkit do not have them, which is why a Folia plugin is not a Spigot plugin.

Some features stay hard on Folia whoever writes the code, such as logic that needs a consistent view of the entire world in a single tick. Describe what you need precisely, and check the result on your own Folia server before going live.

Review, adjust and install your Folia plugin

Open the generated project in the online editor to see how each scheduler is used, then ask for changes in plain language. Every change is saved in the version history, so you can roll back if a tweak goes wrong.

Download the .jar, place it in the plugins folder of your Folia server and restart. Check the console on the first start to confirm the plugin enabled, then try its commands in game.

How it works

  1. 1

    Select Folia

    Pick Folia as the server type and the Minecraft version of your Folia build.

  2. 2

    Describe the plugin

    Explain what it does. Mention timers, teleports or area effects so the AI puts each on the right scheduler.

  3. 3

    Review and download

    The AI writes and compiles the plugin. Read the files in the editor, then download the .jar.

Folia plugin prompts to try

Playtime in the action bar
A Folia plugin that shows each player's playtime in the action bar, refreshed every second through that player's entity scheduler. Save playtime to a YAML file when the player quits.
Random teleport
/rtp teleports the player to a random safe spot within 5,000 blocks using teleportAsync and the entity scheduler. 60-second cooldown, radius set in config.yml.
Crop booster blocks
Every 30 seconds, grow crops by one stage within 8 blocks of each placed booster block. Run the growth on the region scheduler at the booster's location. Boosters are saved in boosters.yml.
Rotating announcements
Broadcast a rotating message from config.yml every 10 minutes with the global region scheduler. /announce reload reloads the list.
Combat tag
When a player hits another player, tag both for 15 seconds and show the remaining time in the action bar. A player who logs out while tagged is killed. Use entity schedulers only.

Frequently asked questions

Is the Folia plugin generator free?

Yes, it is free to start with a Google account and no credit card. The free plan covers 5 AI generations or edits per day, with a 2-hour wait between generations, and includes the compiled .jar.

What does folia-supported: true do?

It tells Folia the plugin was written for regionized multithreading, and Folia will not load a plugin without it. The line alone does not make a plugin safe: the code also has to use Folia's schedulers.

Why does my plugin throw UnsupportedOperationException on Folia?

Usually because it calls Bukkit.getScheduler() or a BukkitRunnable, which Folia does not support. That work has to move to the global region, region, entity or async scheduler.

Will a Folia plugin work on Paper?

Usually yes on recent Paper versions, which also provide these schedulers and run them on the main thread. It will not work on Spigot or Bukkit.

Which Minecraft versions can I target for Folia?

Choose the exact version your Folia server runs. Folia is not released for every Minecraft version, so match what your server reports rather than picking the newest release in the list.

Do I need to understand Java or threads?

No. You describe the behavior and the AI handles the schedulers. Knowing the basics on this page simply helps you describe timers and teleports clearly.

Should my server switch to Folia?

Folia pays off on large servers with many players spread across the world and many CPU cores. Plenty of plugins still do not support it, so check your plugin list before switching.

Get a plugin your Folia server will load

Describe it, let the AI put each task on the right scheduler, and download the compiled .jar. Free to start, no credit card.

Generate a Folia plugin

Updated September 17, 2026