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}