Extension Points

Beyond the addon API, IgniteSky exposes a small set of service provider interfaces (SPIs) for the integrations people most often need. Every one is a typed service registered through Bukkit's services manager, so there is no reflection anywhere.

WorthSource: feed island value from a shop

If you already price blocks in a shop plugin, register a WorthSource and set level.worth-sync to BUY or SELL. IgniteSky reads each block's price through the SPI and falls back to block-values for anything the shop does not price.

Bukkit.getServicesManager().register(
    com.ignitedev.ignitesky.api.worth.WorthSource.class,
    myShopSource,
    context().getPlugin(),
    org.bukkit.plugin.ServicePriority.Normal);
config.yml
level:
  worth-sync: SELL

See Island Levels & Worth for the player side.

SlimeWorldProvider: host worlds in Slime format

To store per island worlds in Slime format, set a mode's hosting strategy to SWM and register a SlimeWorldProvider. The bridge depends on the ASWM API directly. IgniteSky calls provisionWorld(name, seed, natural) when it needs a new island world, and falls back to a plain folder copy if no provider is registered.

Bukkit.getServicesManager().register(
    com.ignitedev.ignitesky.api.world.SlimeWorldProvider.class,
    myAswmBridge,
    context().getPlugin(),
    org.bukkit.plugin.ServicePriority.Normal);

MigrationImporter: add an import source

The migration system is open too. Implement MigrationImporter to teach IgniteSky how to read another plugin's data: give it an id, a description, a default source location, and a parse method that returns a list of islands. The built-in superior, bentobox and ignitesky importers use exactly this interface.

The principle behind all of them

Typed dependencies, never reflection

Every extension point here is an interface you implement and a service you register. IgniteSky calls your code through the interface; it never reaches into your plugin, and your plugin never reaches into its internals. That is what keeps integrations stable across versions, on both sides.