package jk_5.nailed.server.team; import com.google.common.collect.ImmutableSet; import jk_5.nailed.api.chat.ChatColor; import jk_5.nailed.api.map.Team; import jk_5.nailed.api.mappack.metadata.MappackTeam; import jk_5.nailed.api.player.Player; import jk_5.nailed.api.scoreboard.ScoreboardTeam; import jk_5.nailed.api.util.Location; import jk_5.nailed.server.map.MapTeamManager; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collection; import java.util.HashSet; import java.util.Set; public class NailedTeam implements Team { private final MappackTeam mappackTeam; private final Set<Player> memberSet = new HashSet<Player>(); private final ScoreboardTeam scoreboardTeam; private Location spawnpoint = null; public NailedTeam(MappackTeam mappackTeam, MapTeamManager manager) { this.mappackTeam = mappackTeam; this.scoreboardTeam = manager.getMap().getScoreboardManager().getOrCreateTeam(mappackTeam.id()); this.scoreboardTeam.setPrefix(mappackTeam.color().toString()); this.scoreboardTeam.setDisplayName(mappackTeam.name()); } public void onPlayerJoined(@Nonnull Player player){ this.memberSet.add(player); scoreboardTeam.addPlayer(player); } public void onPlayerLeft(@Nonnull Player player){ this.memberSet.remove(player); this.scoreboardTeam.removePlayer(player); } @Nonnull @Override public String id() { return mappackTeam.id(); } @Nonnull @Override public String name() { return mappackTeam.name(); } @Nonnull @Override public ChatColor color() { return mappackTeam.color(); } @Nonnull @Override public Collection<Player> members() { return ImmutableSet.copyOf(memberSet); } @Nullable @Override public Location getSpawnPoint() { return spawnpoint; } @Override public void setSpawnPoint(@Nullable Location spawnpoint) { this.spawnpoint = spawnpoint; } @Override public String getName() { return mappackTeam.name(); } }