All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.craftbukkit.scoreboard.CraftTeam Maven / Gradle / Ivy

The newest version!
package org.bukkit.craftbukkit.scoreboard;

import com.google.common.collect.ImmutableSet;
import net.minecraft.server.ScoreboardTeam;
import net.minecraft.server.ScoreboardTeamBase.EnumNameTagVisibility;
import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.scoreboard.NameTagVisibility;
import org.bukkit.scoreboard.Team;

import java.util.Set;

final class CraftTeam extends CraftScoreboardComponent implements Team {
  private final ScoreboardTeam team;

  CraftTeam(CraftScoreboard scoreboard, ScoreboardTeam team) {
    super(scoreboard);
    this.team = team;
  }

  public static EnumNameTagVisibility bukkitToNotch(NameTagVisibility visibility) {
    switch (visibility) {
      case ALWAYS:
        return EnumNameTagVisibility.ALWAYS;
      case NEVER:
        return EnumNameTagVisibility.NEVER;
      case HIDE_FOR_OTHER_TEAMS:
        return EnumNameTagVisibility.HIDE_FOR_OTHER_TEAMS;
      case HIDE_FOR_OWN_TEAM:
        return EnumNameTagVisibility.HIDE_FOR_OWN_TEAM;
      default:
        throw new IllegalArgumentException("Unknown visibility level " + visibility);
    }
  }

  public static NameTagVisibility notchToBukkit(EnumNameTagVisibility visibility) {
    switch (visibility) {
      case ALWAYS:
        return NameTagVisibility.ALWAYS;
      case NEVER:
        return NameTagVisibility.NEVER;
      case HIDE_FOR_OTHER_TEAMS:
        return NameTagVisibility.HIDE_FOR_OTHER_TEAMS;
      case HIDE_FOR_OWN_TEAM:
        return NameTagVisibility.HIDE_FOR_OWN_TEAM;
      default:
        throw new IllegalArgumentException("Unknown visibility level " + visibility);
    }
  }

  public String getName() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.getName();
  }

  public String getDisplayName() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.getDisplayName();
  }

  public void setDisplayName(String displayName) throws IllegalStateException {
    Validate.notNull(displayName, "Display name cannot be null");
    Validate.isTrue(displayName.length() <= 32, "Display name '" + displayName + "' is longer than the limit of 32 characters");
    CraftScoreboard scoreboard = checkState();

    team.setDisplayName(displayName);
  }

  public String getPrefix() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.getPrefix();
  }

  public void setPrefix(String prefix) throws IllegalStateException, IllegalArgumentException {
    Validate.notNull(prefix, "Prefix cannot be null");
    Validate.isTrue(prefix.length() <= 32, "Prefix '" + prefix + "' is longer than the limit of 32 characters");
    CraftScoreboard scoreboard = checkState();

    team.setPrefix(prefix);
  }

  public String getSuffix() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.getSuffix();
  }

  public void setSuffix(String suffix) throws IllegalStateException, IllegalArgumentException {
    Validate.notNull(suffix, "Suffix cannot be null");
    Validate.isTrue(suffix.length() <= 32, "Suffix '" + suffix + "' is longer than the limit of 32 characters");
    CraftScoreboard scoreboard = checkState();

    team.setSuffix(suffix);
  }

  public boolean allowFriendlyFire() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.allowFriendlyFire();
  }

  public void setAllowFriendlyFire(boolean enabled) throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    team.setAllowFriendlyFire(enabled);
  }

  public boolean canSeeFriendlyInvisibles() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.canSeeFriendlyInvisibles();
  }

  public void setCanSeeFriendlyInvisibles(boolean enabled) throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    team.setCanSeeFriendlyInvisibles(enabled);
  }

  public NameTagVisibility getNameTagVisibility() throws IllegalArgumentException {
    CraftScoreboard scoreboard = checkState();

    return notchToBukkit(team.getNameTagVisibility());
  }

  public void setNameTagVisibility(NameTagVisibility visibility) throws IllegalArgumentException {
    CraftScoreboard scoreboard = checkState();

    team.setNameTagVisibility(bukkitToNotch(visibility));
  }

  public Set getPlayers() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    ImmutableSet.Builder players = ImmutableSet.builder();
    for (String playerName : team.getPlayerNameSet()) {
      players.add(Bukkit.getOfflinePlayer(playerName));
    }
    return players.build();
  }

  @Override
  public Set getEntries() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    ImmutableSet.Builder entries = ImmutableSet.builder();
    for (String playerName : team.getPlayerNameSet()) {
      entries.add(playerName);
    }
    return entries.build();
  }

  public int getSize() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    return team.getPlayerNameSet().size();
  }

  public void addPlayer(OfflinePlayer player) throws IllegalStateException, IllegalArgumentException {
    Validate.notNull(player, "OfflinePlayer cannot be null");
    addEntry(player.getName());
  }

  public void addEntry(String entry) throws IllegalStateException, IllegalArgumentException {
    Validate.notNull(entry, "Entry cannot be null");
    CraftScoreboard scoreboard = checkState();

    scoreboard.board.addPlayerToTeam(entry, team.getName());
  }

  public boolean removePlayer(OfflinePlayer player) throws IllegalStateException, IllegalArgumentException {
    Validate.notNull(player, "OfflinePlayer cannot be null");
    return removeEntry(player.getName());
  }

  public boolean removeEntry(String entry) throws IllegalStateException, IllegalArgumentException {
    Validate.notNull(entry, "Entry cannot be null");
    CraftScoreboard scoreboard = checkState();

    if (!team.getPlayerNameSet().contains(entry)) {
      return false;
    }

    scoreboard.board.removePlayerFromTeam(entry, team);
    return true;
  }

  public boolean hasPlayer(OfflinePlayer player) throws IllegalArgumentException, IllegalStateException {
    Validate.notNull(player, "OfflinePlayer cannot be null");
    return hasEntry(player.getName());
  }

  public boolean hasEntry(String entry) throws IllegalArgumentException, IllegalStateException {
    Validate.notNull("Entry cannot be null");

    CraftScoreboard scoreboard = checkState();

    return team.getPlayerNameSet().contains(entry);
  }

  @Override
  public void unregister() throws IllegalStateException {
    CraftScoreboard scoreboard = checkState();

    scoreboard.board.removeTeam(team);
  }

  @Override
  CraftScoreboard checkState() throws IllegalStateException {
    if (getScoreboard().board.getTeam(team.getName()) == null) {
      throw new IllegalStateException("Unregistered scoreboard component");
    }

    return getScoreboard();
  }

  @Override
  public int hashCode() {
    int hash = 7;
    hash = 43 * hash + (this.team != null ? this.team.hashCode() : 0);
    return hash;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    final CraftTeam other = (CraftTeam) obj;
    return !(this.team != other.team && (this.team == null || !this.team.equals(other.team)));
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy