Class Team

All Implemented Interfaces:
Identifiable, Named, ScoreHolder

public class Team extends AbstractEntity implements Named, ScoreHolder
Représente une équipe de joueurs. Aggregate mutable : ajout / retrait de membres, transfert de leadership, mise à jour de visibilité, des scores nommés, et du point de spawn passent par les méthodes de cette classe.

L'identité d'une équipe est son UUID (AbstractEntity.getId()). Deux Team avec le même UUID sont égales, quel que soit le reste de leur état.

Implémente Named (a un nom) et ScoreHolder (porte des scores nommés). Hérite de AbstractEntity pour l'identité.

Toutes les modifications passent normalement par le TeamService, qui orchestre persistance + hooks + évènements Bukkit. Modifier une instance directement (ex. team.addMember(...)) court-circuite la persistance.

  • Constructor Details

  • Method Details

    • newMember

      protected TeamMember newMember(UUID playerId, TeamRole role)
      Override to instantiate a custom TeamMember subclass.
    • getName

      public String getName()
      Specified by:
      getName in interface Named
    • getTag

      public String getTag()
    • getColor

      public TeamColor getColor()
    • getLeaderId

      public Optional<UUID> getLeaderId()
      L'UUID du chef si la team en a un, sinon Optional.empty().
    • hasLeader

      public boolean hasLeader()
      true si la team a un chef défini.
    • isLeader

      public boolean isLeader(UUID playerId)
      true si playerId est l'UUID du chef actuel.
    • getVisibility

      public TeamVisibility getVisibility()
    • setVisibility

      public void setVisibility(TeamVisibility visibility)
    • isPublic

      public boolean isPublic()
    • getLeader

      public Optional<TeamMember> getLeader()
      Le TeamMember chef si la team en a un, sinon Optional.empty().
    • getMembers

      public Set<TeamMember> getMembers()
    • getMember

      public Optional<TeamMember> getMember(UUID playerId)
    • hasMember

      public boolean hasMember(UUID playerId)
    • size

      public int size()
    • addMember

      public TeamMember addMember(UUID playerId)
    • removeMember

      public boolean removeMember(UUID playerId)
    • transferLeadership

      public void transferLeadership(UUID newLeaderId)
      Transfert classique du leadership : le nouveau chef doit déjà être membre de l'équipe, et l'équipe doit avoir un chef actuel.

      Pour un cas plus général (équipe leaderless, ou nouveau chef non encore membre), utiliser setLeader(UUID).

    • setLeader

      public void setLeader(UUID newLeaderId)
      Assigne un chef à l'équipe, plus flexible que transferLeadership(UUID) :
      • Si la team est leaderless → ajoute playerId comme chef (en tant que membre s'il ne l'est pas déjà).
      • Si la team a déjà un chef → démet l'ancien en TeamRole.MEMBER, promeut playerId en TeamRole.LEADER (auto-ajout si pas membre).
    • getScore

      public int getScore(String scoreName)
      Specified by:
      getScore in interface ScoreHolder
    • hasScore

      public boolean hasScore(String scoreName)
      Specified by:
      hasScore in interface ScoreHolder
    • getScores

      public Map<String,Integer> getScores()
      Specified by:
      getScores in interface ScoreHolder
    • getTotalScore

      public int getTotalScore()
      Specified by:
      getTotalScore in interface ScoreHolder
    • addScore

      public int addScore(String scoreName, int delta)
      Specified by:
      addScore in interface ScoreHolder
    • setScore

      public int setScore(String scoreName, int value)
      Specified by:
      setScore in interface ScoreHolder
    • resetScore

      public boolean resetScore(String scoreName)
      Specified by:
      resetScore in interface ScoreHolder
    • resetAllScores

      public void resetAllScores()
      Specified by:
      resetAllScores in interface ScoreHolder
    • getSpawnPoint

      public Optional<org.bukkit.Location> getSpawnPoint()
    • hasSpawnPoint

      public boolean hasSpawnPoint()
    • setSpawnPoint

      public void setSpawnPoint(org.bukkit.Location location)
    • clearSpawnPoint

      public void clearSpawnPoint()