Developers
Each plugin exposes a small Kotlin-friendly API to other plugins on the same server, and each backend has a REST API documented with OpenAPI.
| What | Where |
|---|---|
| Bukkit events fired by the plugins | Events |
| Bukkit services (SaunaCache, AnchorPoint) | SaunaCache developer guide |
| Backend REST APIs | REST API |
| Shipping your own plugin through ForgeRelay | Publishing |
Conventions
Section titled “Conventions”- API classes live in
me.soknight.<plugin>.apiand are kept binary compatible within a major version. - Everything that does network I/O is a
suspendfunction, with aCompletableFuturetwin ending inAsyncfor Java callers. - Nullable means “not found”, never “error”. Errors are exceptions from
me.soknight.common.SoKnightException. - Depend on the plugin in
plugin.ymlwithdependorsoftdepend; never shade the API classes.