Solved Get online players count in both 1.5.2 and 1.8

Discussion in 'Plugin Development' started by woutwoot, Mar 12, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    woutwoot

    Last edited: Mar 12, 2015
  2. Offline

    1Rogue

    Just for posterity:
    Code:java
    1. public class OnlinePlayers {
    2.  
    3. private static Supplier<Collection<? extends Player>> players;
    4.  
    5. public static Collection<? extends Player> get() {
    6. OnlinePlayers.validate();
    7. return this.players.get();
    8. }
    9.  
    10. public static int size() {
    11. OnlinePlayers.validate();
    12. return OnlinePlayers.get().size();
    13. }
    14.  
    15. private static void validate() {
    16. if (OnlinePlayers.players == null) {
    17. Class<?> clazz = Bukkit.class.getMethod("getOnlinePlayers").getReturnType();
    18. if(Collection.class.isAssignableFrom(clazz)) {
    19. OnlinePlayers.players = () -> Bukkit.getOnlinePlayers();
    20. } else {
    21. OnlinePlayers.players = () -> Arrays.asList(Bukkit.getOnlinePlayers()); //List shouldn't be modified
    22. }
    23. }
    24. }
    25.  
    26. }


    Code:java
    1. Collection<Player> onlinePlayers = OnlinePlayers.get();
    2. int numOnline = OnlinePlayers.size();
     
    Last edited: Mar 12, 2015
    Konato_K likes this.
  3. @woutwoot Glad that your problem has been solved. Please set this thread to solved by going to Thread Tools > Edit Title > Prefix > Solved. :)
     
Thread Status:
Not open for further replies.

Share This Page