Compatibility

Sigil runs on Minecraft 1.18-26.x, on Spigot, Paper, Purpur, Pufferfish and Folia, from one jar.

Probes, not version strings

Sigil picks an implementation per server by probing for the capability, never by comparing version strings. Forks misreport versions, and a probe tests the thing that actually matters, which is whether the method is there.

What degrades, and what happens instead

FeatureFromBelow that
Named item models1.21.4falls back to custom model data
Max stack size1.20.5not needed; unique stack data prevents stacking anyway
Smithing transform recipes1.19.4recipe skipped and reported at startup
Grindstone protectionPaperabsent, reported at startup

Anything unavailable is downgraded per feature without aborting the rest of the load and is reported once in a startup block, so nothing is quietly broken without being named.

Folia

Supported. All scheduling goes through an abstraction with a region-threaded backend; there is no BukkitRunnable or Bukkit.getScheduler() anywhere in the plugin.

If you are writing an ability, use ctx.scheduler() and the same code is correct on both, because off Folia the region-aware methods collapse onto the main thread. See the API.

Reporting a version problem

/sigil platform

Prints the detected server, the compatibility tier chosen and which scheduler is in use. Paste that plus the startup block containing any gate lines, and the interesting part of the answer is usually already in it.

Building from source

Sigil shades Keystone into its jar, and Keystone is published, so mvn install is all you need:

mvn install

keystone-parent is Sigil's Maven parent, and Maven resolves a parent before it reads the project's own <repositories>, so the Nexus repository has to come from your ~/.m2/settings.xml:

<profiles>
  <profile>
    <id>bwmp-nexus</id>
    <repositories>
      <repository>
        <id>bwmp-nexus</id>
        <url>https://nexus.bwmp.dev/repository/maven-public/</url>
      </repository>
    </repositories>
  </profile>
</profiles>
<activeProfiles><activeProfile>bwmp-nexus</activeProfile></activeProfiles>

Building Keystone from source and mvn install-ing it locally also works, and is the way to test an unreleased change:

git clone https://github.com/bwmp-dev/Keystone && cd Keystone && mvn install

The result is sigil-plugin/target/Sigil-<version>.jar. There is no second plugin for server owners to install, because the framework is inside the jar.

Use the jar from sigil-plugin/target/, not the API module. The API is a compile-time dependency for addon developers; the plugin jar contains the runtime implementation and its shaded libraries.