001package fr.aumgn.bukkitutils.playerref.set;
002
003import java.util.HashSet;
004import java.util.List;
005
006import org.bukkit.OfflinePlayer;
007import org.bukkit.entity.Player;
008
009import com.google.common.collect.Iterables;
010import com.google.common.collect.Lists;
011
012import fr.aumgn.bukkitutils.playerref.PlayerRef;
013import fr.aumgn.bukkitutils.playerref.PlayersIterable;
014import fr.aumgn.bukkitutils.playerref.ToOfflinePlayer;
015
016public class PlayersRefHashSet
017            extends HashSet<PlayerRef> implements PlayersRefSet {
018
019    private static final long serialVersionUID = -2701720565674845979L;
020
021    public PlayersRefHashSet() {
022        super();
023    }
024
025    @Override
026    public boolean contains(OfflinePlayer player) {
027        return contains(PlayerRef.get(player));
028    }
029
030    @Override
031    public boolean add(OfflinePlayer player) {
032        return add(PlayerRef.get(player));
033    }
034
035    @Override
036    public boolean remove(OfflinePlayer player) {
037        return remove(PlayerRef.get(player));
038    }
039
040    @Override
041    public Iterable<OfflinePlayer> offlinePlayers() {
042        return Iterables.transform(
043                PlayersRefHashSet.this, new ToOfflinePlayer());
044    }
045
046    @Override
047    public Iterable<Player> players() {
048        return new PlayersIterable(PlayersRefHashSet.this);
049    }
050
051    @Override
052    public List<OfflinePlayer> getOfflinePlayers() {
053        return Lists.newArrayList(offlinePlayers());
054    }
055
056    @Override
057    public List<Player> getPlayers() {
058        return Lists.newArrayList(players());
059    }
060}