package xyz.etztech.serverapi; import org.bukkit.OfflinePlayer; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import xyz.etztech.serverapi.commands.MainCommand; import xyz.etztech.serverapi.tps.TPS; import xyz.etztech.serverapi.web.IProvider; import xyz.etztech.serverapi.web.Web; import xyz.etztech.serverapi.web.api.*; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.logging.Logger; public class ServerAPI extends JavaPlugin implements IProvider { private static ServerAPI instance; private static TPS tps; private Web web = new Web(this); private final Logger log = Logger.getLogger( "Minecraft" ); @Override public void onEnable() { instance = this; web = new Web(this); saveDefaultConfig(); reloadConfig(); if (isEnabled()) { new MainCommand(this); tps = new TPS(); getServer().getScheduler().scheduleSyncRepeatingTask(this, tps, 1000, 50); } } @Override public void onDisable() { web.stop(); } @Override public void reloadConfig() { super.reloadConfig(); web.stop(); web.start( getConfig().getInt("port", 8080), getConfig().getString("password", "") ); } public void log(String message) { log.info( "[ServerAPI]: " + message ); } public static ServerAPI getInstance() { return instance; } public static TPS getTPS() { return tps; } @Override public TPSAPI TPS() { return new TPSAPI(tps.getHistory()); } @Override public WorldAPI world(String name) { for (World world : getServer().getWorlds()) { if (world.getName().equalsIgnoreCase(name)) { return WorldAPI.fromMinecraft(world); } } return new WorldAPI("unknown", 0, WorldAPI.WEATHER_UNKNOWN); } @Override public List worlds() { List worldAPIS = new ArrayList<>(); for (World world : getServer().getWorlds()) { worldAPIS.add(WorldAPI.fromMinecraft(world)); } return worldAPIS; } @Override public Set players() { Set players = new HashSet<>(); for (Player player : getServer().getOnlinePlayers()) { players.add(PlayerAPI.fromMinecraft(player)); } return players; } @Override public Set bans() { Set players = new HashSet<>(); for (OfflinePlayer player : getServer().getBannedPlayers()) { players.add(PlayerAPI.fromMinecraft(player)); } return players; } @Override public QueryAPI query() { return QueryAPI.fromMinecraft(getServer()); } }