SPluginsSPlugins

🚀 Getting started

All SsomarDev plugins (ExecutableItems, ExecutableBlocks, ExecutableEvents, ExecutableCrafting, MyFurniture, CustomPiglinsTrades) expose their public API through SCore, our open-source core library. You compile only against artifacts from our public Maven repository:

https://repo.ssomar.com — resolvable by Maven and Gradle, no manual jar download.

1. Add the dependency

Maven:

<repositories>
    <repository>
        <id>splugins-repository-releases</id>
        <name>SPlugins Repository</name>
        <url>https://repo.ssomar.com/releases</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.ssomar</groupId>
        <artifactId>SCore</artifactId>
        <version>VERSION</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Gradle:

repositories {
    maven {
        name = "spluginsRepositoryReleases"
        url = uri("https://repo.ssomar.com/releases")
    }
}

dependencies {
    compileOnly("com.ssomar:SCore:VERSION")
}
Tip

Browse the available versions at repo.ssomar.com and the javadoc at https://repo.ssomar.com/javadoc/releases/com/ssomar/SCore/VERSION — your IDE also picks the javadoc up automatically (documentation on hover).

Published artifacts:

ArtifactContents
com.ssomar:SCorefull jar — contains every public API (com.ssomar.score.api.*)
com.ssomar.executablecrafting:ExecutableCraftingfull jar (advanced recipe API)
com.ssomar.executableblocks:ExecutableBlocks-APIlegacy API classes only
com.ssomar.executableevents:ExecutableEvents-APIlegacy API classes only
com.ssomar.myfurniture:MyFurniture-APIlegacy API classes only

For almost every integration, com.ssomar:SCore is the only dependency you need.

2. Declare the dependency in your plugin.yml

softdepend: [SCore, ExecutableItems, ExecutableBlocks, ExecutableEvents, ExecutableCrafting, MyFurniture, CustomPiglinsTrades]

(keep only the plugins you integrate with — SCore is always required)

3. Entry points

One facade per plugin, all under com.ssomar.score.api.*:

PluginFacadeGuide
ExecutableItemscom.ssomar.score.api.executableitems.ExecutableItemsAPIExecutableItems API
ExecutableBlockscom.ssomar.score.api.executableblocks.ExecutableBlocksAPIExecutableBlocks API
ExecutableEventscom.ssomar.score.api.executableevents.ExecutableEventsAPIExecutableEvents API
ExecutableCraftingcom.ssomar.score.api.executablecrafting.ExecutableCraftingAPIExecutableCrafting API
MyFurniturecom.ssomar.score.api.myfurniture.MyFurnitureAPIMyFurniture API
CustomPiglinsTradescom.ssomar.score.api.custompiglinstrades.CustomPiglinsTradesAPICustomPiglinsTrades API

The implementation is registered at runtime by each plugin when it enables:

  • If the plugin is not installed, the facade getters throw IllegalStateException. Guard optional integrations with isEnabled():
if (ExecutableItemsAPI.isEnabled()) {
    // safe to use ExecutableItemsAPI.getExecutableItemsManager()
}
  • If the plugin is still loading, lookups return empty results. Two ways to know the API is ready:
// 1. Check the flag
if (ExecutableItemsAPI.getExecutableItemsManager().isLoaded()) { ... }

// 2. Listen to the PostLoad event (fired once all configurations are loaded)
@EventHandler
public void onLoaded(ExecutableItemsPostLoadEvent e) {
    ExecutableItemsManagerInterface manager = e.getManager();
    // lookups return complete results from here
}

Every plugin has the same lifecycle pair: isLoaded() + <Plugin>PostLoadEvent.

4. First integration in 30 seconds

// Give the ExecutableItem "my_sword" to a player
ExecutableItemsAPI.getExecutableItemsManager()
        .getExecutableItem("my_sword")
        .ifPresent(item -> item.give(player));

Continue with the per-plugin guides in this section, the events reference, and the migration guide if you were using the old APIs.

Created Jul 11, 2026Last updated Jul 11, 2026 by Ssomar
Edit this page on GitHub