package tv.mineinthebox.essentials.helpers;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
public class OnlinePlayersHelper {
//credits for this class goes to shadypotato from bukkit: https://forums.bukkit.org/threads/code-snippet-workaround-for-the-new-bukkit-getonlineplayers-method.285072/
@SuppressWarnings("unchecked")
public static Player[] getOnlinePlayers() {
try {
Method check = Bukkit.class.getMethod("getOnlinePlayers", new Class<?>[0]);
if(check.getReturnType() == Player[].class) {
return (Player[])check.invoke(null, new Object[0]);
} else if(check.getReturnType() == List.class || check.getReturnType() == Collection.class) {
Collection<Player> players = (Collection<Player>) check.invoke(null, new Object[0]);
Player[] ps = new Player[(players.size())];
int i = 0;
for(Player p : players) {
ps[i] = p;
i++;
}
return ps;
}
} catch(Exception e) {
e.printStackTrace();
}
throw new NullPointerException("a fatal error has been occuried, please restart your server.");
}
}