Getting the Plugin Instance

Access the main plugin instance to use the API:

import dev.spoky.teamduels.SPxTeamDuels;

// Get the plugin instance
SPxTeamDuels plugin = SPxTeamDuels.getInstance();

// Access managers
TeamManager teamManager = plugin.getTeamManager();
ArenaManager arenaManager = plugin.getArenaManager();
DuelManager duelManager = plugin.getDuelManager();
ConfigManager configManager = plugin.getConfigManager();

Team API

Work with teams programmatically:

Getting Teams

// Get a team by name
Team team = teamManager.getTeam("TeamName");

// Get a player's team
Team playerTeam = teamManager.getPlayerTeam(player.getUniqueId());

// Check if player is in a team
boolean isInTeam = teamManager.isInTeam(player.getUniqueId());

// Get all teams
Collection<Team> allTeams = teamManager.getAllTeams();

Managing Teams

// Create a new team
boolean success = teamManager.createTeam("NewTeam", leaderUUID);

// Add a player to a team
teamManager.addPlayerToTeam(playerUUID, "TeamName");

// Remove a player from their team
teamManager.removePlayerFromTeam(playerUUID);

// Delete a team
teamManager.deleteTeam("TeamName");

Team Object Methods

Team team = teamManager.getTeam("TeamName");

// Get team info
String name = team.getName();
UUID leader = team.getLeader();
List<UUID> members = team.getAllMembers();
int size = team.getSize();

// Check roles
boolean isLeader = team.isLeader(playerUUID);
boolean isMember = team.isMember(playerUUID);

// Check duel status
boolean inDuel = team.isInDuel();

Arena API

Manage arenas through code:

// Get an arena by name
Arena arena = arenaManager.getArena("ArenaName");

// Get a free arena for a duel
Arena freeArena = arenaManager.getFreeArena();

// Get all arenas
Collection<Arena> allArenas = arenaManager.getAllArenas();

// Check if arena exists
boolean exists = arenaManager.arenaExists("ArenaName");

// Get arena counts
int total = arenaManager.getArenaCount();
int free = arenaManager.getFreeArenaCount();

Arena Object Methods

Arena arena = arenaManager.getArena("ArenaName");

// Get arena info
String name = arena.getName();
Location pos1 = arena.getPos1();  // Team 1 spawn
Location pos2 = arena.getPos2();  // Team 2 spawn

// Check/set usage status
boolean inUse = arena.isInUse();
arena.setInUse(true);

Duel API

Work with duels and duel requests:

// Send a duel request
boolean sent = duelManager.sendDuelRequest(requesterTeam, targetTeam);

// Check for pending request
boolean hasPending = duelManager.hasPendingRequest(targetTeam, requesterTeam);

// Start a duel
boolean started = duelManager.startDuel(team1, team2);

// Check if player is in a duel
boolean inDuel = duelManager.isInDuel(playerUUID);

// Get player's active duel
ActiveDuel duel = duelManager.getPlayerDuel(playerUUID);

ActiveDuel Object Methods

ActiveDuel duel = duelManager.getPlayerDuel(playerUUID);

// Get teams
Team team1 = duel.getTeam1();
Team team2 = duel.getTeam2();
Arena arena = duel.getArena();

// Get player's team in the duel
Team playerTeam = duel.getPlayerTeam(playerUUID);
Team opponentTeam = duel.getOpponentTeam(playerUUID);

// Check duel status
boolean started = duel.isStarted();
boolean alive = duel.isPlayerAlive(playerUUID);

// Get winning team (null if duel ongoing)
Team winner = duel.getWinningTeam();

Color Utilities

Use the built-in color utilities for consistent styling:

import dev.spoky.teamduels.utils.ColorUtils;

// Translate color codes
String colored = ColorUtils.translate("&aGreen &cRed &#FF5500Hex");

// Create gradient text
String gradient = ColorUtils.gradientPurpleBlue("Gradient Text");
String goldGradient = ColorUtils.gradientGoldYellow("Gold Text");
String redGradient = ColorUtils.gradientRedOrange("Red Text");
String greenGradient = ColorUtils.gradientGreenCyan("Green Text");

// Rainbow text
String rainbow = ColorUtils.rainbow("Rainbow!");

// Convert to small caps
String smallCaps = ColorUtils.toSmallCaps("small caps");
// Result: "ꜱᴍᴀʟʟ ᴄᴀᴘꜱ"

// Strip colors
String plain = ColorUtils.stripColor(coloredString);

Maven Dependency

Add SPxTeam Duels as a dependency in your project:

<!-- Add to your pom.xml -->
<dependency>
    <groupId>dev.spoky</groupId>
    <artifactId>SPxTeamDuels</artifactId>
    <version>1.0.0</version>
    <scope>provided</scope>
</dependency>

Add to your plugin.yml:

depend: [SPxTeamDuels]
# Or use softdepend if optional
softdepend: [SPxTeamDuels]

Example Integration

Here's a complete example of integrating with SPxTeam Duels:

public class MyPlugin extends JavaPlugin {

    private SPxTeamDuels teamDuels;

    @Override
    public void onEnable() {
        // Check if SPxTeamDuels is installed
        if (getServer().getPluginManager().getPlugin("SPxTeamDuels") != null) {
            teamDuels = SPxTeamDuels.getInstance();
            getLogger().info("Hooked into SPxTeam Duels!");
        }
    }

    // Example: Get player's team name
    public String getPlayerTeamName(Player player) {
        if (teamDuels == null) return null;
        
        Team team = teamDuels.getTeamManager()
                .getPlayerTeam(player.getUniqueId());
        return team != null ? team.getName() : null;
    }

    // Example: Check if player is in an active duel
    public boolean isPlayerDueling(Player player) {
        if (teamDuels == null) return false;
        
        return teamDuels.getDuelManager()
                .isInDuel(player.getUniqueId());
    }
}