66 lines
1.8 KiB
Java

package tk.ditservices.utils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.lang.Math;
import java.lang.reflect.InvocationTargetException;
public class Server {
public enum RAM {
FREE,USED,TOTAL
}
/**
* Get RAM usage statistics of the MC server.
* @param t The RAM usage type you want to get. Server.RAM enum. It could be FREE,TOTAL,USED
*/
public static long getRAM(Server.RAM t) {
long mb = 1048576L;
Runtime runtime = Runtime.getRuntime();
runtime.gc();
if (t == RAM.FREE){
return runtime.freeMemory() / mb;
}
if (t == RAM.TOTAL){
return runtime.totalMemory() / mb;
}
if (t == RAM.USED){
return (runtime.totalMemory() - runtime.freeMemory()) / mb;
}
return 0;
}
/**
* Get a player's ping.
* @param player The player object.
*/
public static int getPlayerPing(Player player){
try {
//Object entityPlayer = player.getClass().getMethod("getHandle").invoke(player);
//return (int) entityPlayer.getClass().getField("ping").get(entityPlayer);
return player.getPing();
} catch (IllegalArgumentException | SecurityException e) {
e.printStackTrace();
return -1;
}
}
/**
* Get an average of the currently online player's ping.
*/
public static int getAveragePing(){
int sum = 0;
int avg = 0;
int onlineplayers = 0;
if (Bukkit.getOnlinePlayers().size() !=0){
onlineplayers =Bukkit.getOnlinePlayers().size();
for (Player player : Bukkit.getOnlinePlayers()){
sum += player.getPing();
}
avg = Math.floorDiv(sum,onlineplayers);
}
return avg;
}
}