001package fr.aumgn.bukkitutils.playerref;
002
003import java.util.Iterator;
004
005import org.bukkit.entity.Player;
006
007import com.google.common.collect.AbstractIterator;
008
009public class PlayersIterable implements Iterable<Player> {
010
011    private static class PlayersIterator extends AbstractIterator<Player> {
012
013        private final Iterator<PlayerRef> it;
014
015        public PlayersIterator(Iterator<PlayerRef> iterator) {
016            this.it = iterator;
017        }
018
019        protected Player computeNext() {
020            while (it.hasNext()) {
021                Player player = it.next().getPlayer();
022                if (player != null) {
023                    return player;
024                }
025            }
026
027            return endOfData();
028        }
029    }
030
031    private final PlayersIterator iterator;
032
033    public PlayersIterable(Iterable<PlayerRef> iterable) {
034        this.iterator = new PlayersIterator(iterable.iterator());
035    }
036
037    @Override
038    public Iterator<Player> iterator() {
039        return iterator;
040    }
041}