Developer API Overview

Hook into the ShyamDuels API to fetch stats, listen to match events, manage queues, and start custom duels.

Maven Integration

To compile your plugin against ShyamDuels, declare the jar file as a dependency. Add the following to your pom.xml file:

xml<dependency>
    <groupId>com.shyamstudio</groupId>
    <artifactId>shyamduels</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>

Declaring Soft-Dependencies

To ensure that your plugin enables after ShyamDuels on server startup, declare it in your plugin.yml configuration:

yamlname: MyIntegrationPlugin
version: 1.0
main: com.myname.integration.IntegrationPlugin
api-version: '1.21'
depend: [ShyamDuels]    # Guarantees ShyamDuels enables first

Accessing the API

The public entry point is ShyamDuelsAPI. Resolve the interface instance during your plugin startup using the static provider:

javaimport com.shyamstudio.shyamduels.api.ShyamDuelsAPI;
import com.shyamstudio.shyamduels.api.ShyamDuelsProvider;
import org.bukkit.plugin.java.JavaPlugin;

public class IntegrationPlugin extends JavaPlugin {

    private ShyamDuelsAPI api;

    @Override
    public void onEnable() {
        // Resolve the API instance
        this.api = ShyamDuelsProvider.get();
        
        if (api == null) {
            getLogger().severe("ShyamDuels was not found! Disabling integration.");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        getLogger().info("Successfully hooked into ShyamDuels API!");
    }
}

Available Services

The ShyamDuelsAPI interface exposes the following service accessors. See Services Reference for method details.

AccessorServiceNotes
duels()DuelServiceMatch lifecycle, invites, party duels
arenas()ArenaServiceArena lookup and availability
kits()KitServiceKit definitions and player layouts
kitShare()KitShareServiceEdited-kit sharing codes
queue()QueueServiceRanked matchmaking queues
commands()CommandServiceCommand restriction helpers
parties()PartyServiceParty creation and management
ffa()FFAServiceFree-for-all arenas
spectators()SpectatorServiceMatch spectating
rematch()RematchServicePost-duel rematch offers
stats()StatsServicePlayer statistics and ELO
settings()SettingsServicePer-player preferences
tab()TabServiceTab list management
scoreboard()ScoreboardServiceScoreboard display
nameTags()NameTagServiceNametag formatting
animations()AnimationServiceTab/scoreboard animations
friends()FriendsServiceFriends list
placeholders()PlaceholderServiceInternal placeholder resolution
practice()PracticeServiceOptional: practice module features
customKits()CustomKitsServiceOptional: player-built custom kits
kitEditor()KitEditorServiceOptional: kit editor / kit room

Services marked Optional return Optional.empty() when their module is disabled in config.yml.