API Java

Ce document présente l'API Java disponible pour interagir programmatiquement avec le système d'équipes du plugin Horizons.

📝 Introduction

La classe TeamManagerAPI sert de façade publique pour accéder aux fonctionnalités du gestionnaire d'équipes (TeamManager). Cette API permet aux développeurs d'intégrer et de manipuler le système d'équipes d'Horizons dans leurs propres plugins.

📋 Méthodes disponibles

🔍 Vérifications d'équipes

  • boolean teamExists(String teamName) - Vérifie si une équipe existe

  • boolean isPlayerInTeam(Player player, String teamName) - Vérifie si un joueur est dans une équipe spécifique

ℹ️ Obtention d'informations sur les équipes

  • String getTeamPrefix(String teamName) - Obtient le préfixe d'une équipe (renvoie null si l'équipe n'existe pas)

  • String getTeamDisplayName(String teamName) - Obtient le nom d'affichage d'une équipe (renvoie null si l'équipe n'existe pas)

  • List<UUID> getTeamPlayerUUIDs(String teamName) - Obtient la liste des UUID des joueurs d'une équipe

  • List<Player> getTeamPlayers(String teamName) - Obtient la liste des objets Player d'une équipe

🏆 Récupération des équipes

  • List<String> getAllTeams() - Obtient la liste de toutes les équipes

  • List<String> getTeamsSortedByScore() - Obtient la liste des équipes triées par score (ordre décroissant)

  • Map<String, Integer> getAllTeamScores() - Obtient une map associant chaque équipe à son score

🛠️ Gestion des équipes

  • void createTeam(String teamName, String prefix, String displayName) - Crée une nouvelle équipe

  • void removeTeam(String teamName) - Supprime une équipe

  • void setTeamPrefix(String teamName, String newPrefix) - Modifie le préfixe d'une équipe

  • void setTeamDisplayName(String teamName, String newDisplayName) - Modifie le nom d'affichage d'une équipe

👤 Gestion des joueurs

  • String getPlayerTeam(Player player) - Obtient le nom de l'équipe d'un joueur (renvoie null si le joueur n'a pas d'équipe)

  • void addPlayerToTeam(Player player, String teamName) - Ajoute un joueur à une équipe

  • void addPlayerToTeamByName(String playerName, String teamName) - Ajoute un joueur par son nom à une équipe (fonctionne pour les joueurs hors ligne)

  • boolean removePlayerFromTeam(String playerName) - Retire un joueur de son équipe

📊 Gestion des scores

  • int getTeamScore(String teamName) - Obtient le score d'une équipe

  • void setTeamScore(String teamName, int score) - Définit le score d'une équipe

  • void addTeamScore(String teamName, int points) - Ajoute des points au score d'une équipe

  • void removeTeamScore(String teamName, int points) - Retire des points du score d'une équipe

💡 Exemples d'utilisation

🎁 Exemple 1: Vérifier l'équipe d'un joueur et ajouter des points

public void rewardPlayerTeam(Player player, int points) {
    Main horizonsPlugin = (Main) Bukkit.getPluginManager().getPlugin("Horizons");
    TeamManagerAPI teamManagerAPI = horizonsPlugin.getTeamManagerAPI();
    
    String teamName = teamManagerAPI.getPlayerTeam(player);
    
    if (teamName != null) {
        teamManagerAPI.addTeamScore(teamName, points);
        player.sendMessage("Votre équipe a reçu " + points + " points !");
    } else {
        player.sendMessage("Vous n'êtes dans aucune équipe !");
    }
}

🏅 Exemple 2: Obtenir le classement des équipes

public void displayTeamRanking(Player player) {
    Main horizonsPlugin = (Main) Bukkit.getPluginManager().getPlugin("Horizons");
    TeamManagerAPI teamManagerAPI = horizonsPlugin.getTeamManagerAPI();
    
    List<String> teams = teamManagerAPI.getTeamsSortedByScore();
    
    player.sendMessage("§6=== Classement des équipes ===");
    
    int rank = 1;
    for (String teamName : teams) {
        String displayName = teamManagerAPI.getTeamDisplayName(teamName);
        int score = teamManagerAPI.getTeamScore(teamName);
        
        player.sendMessage("§e#" + rank + " §f" + displayName + " §7- §f" + score + " points");
        rank++;
    }
}

🤝 Exemple 3: Vérifier si deux joueurs sont dans la même équipe

public boolean arePlayersInSameTeam(Player player1, Player player2) {
    Main horizonsPlugin = (Main) Bukkit.getPluginManager().getPlugin("Horizons");
    TeamManagerAPI teamManagerAPI = horizonsPlugin.getTeamManagerAPI();
    
    String team1 = teamManagerAPI.getPlayerTeam(player1);
    String team2 = teamManagerAPI.getPlayerTeam(player2);
    
    // Si les deux joueurs ont une équipe et que c'est la même
    return team1 != null && team1.equals(team2);
}

🆕 Exemple 4: Créer une nouvelle équipe et y ajouter des joueurs

public void createNewTeam(String teamName, String prefix, String displayName, List<String> playerNames) {
    Main horizonsPlugin = (Main) Bukkit.getPluginManager().getPlugin("Horizons");
    TeamManagerAPI teamManagerAPI = horizonsPlugin.getTeamManagerAPI();

    // Créer l'équipe
    teamManagerAPI.createTeam(teamName, prefix, displayName);

    // Ajouter des joueurs (même hors ligne)
    for (String playerName : playerNames) {
        teamManagerAPI.addPlayerToTeamByName(playerName, teamName);
    }
}

⚙️ Notes d'implémentation

L'API est conçue pour être thread-safe et performante. Les listes retournées sont généralement des copies des collections internes, ce qui permet une utilisation sécurisée sans risquer de corrompre l'état interne du plugin Horizons.

Pour utiliser cette API, vous devez d'abord obtenir une référence au plugin Horizons via le gestionnaire de plugins de Bukkit :

Main horizonsPlugin = (Main) Bukkit.getPluginManager().getPlugin("Horizons");
TeamManagerAPI teamManagerAPI = horizonsPlugin.getTeamManagerAPI();