ServerAPI/src/main/java/xyz/etztech/serverapi/ServerAPI.java

117 lines
2.9 KiB
Java

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<WorldAPI> worlds() {
List<WorldAPI> worldAPIS = new ArrayList<>();
for (World world : getServer().getWorlds()) {
worldAPIS.add(WorldAPI.fromMinecraft(world));
}
return worldAPIS;
}
@Override
public Set<PlayerAPI> players() {
Set<PlayerAPI> players = new HashSet<>();
for (Player player : getServer().getOnlinePlayers()) {
players.add(PlayerAPI.fromMinecraft(player));
}
return players;
}
@Override
public Set<PlayerAPI> bans() {
Set<PlayerAPI> players = new HashSet<>();
for (OfflinePlayer player : getServer().getBannedPlayers()) {
players.add(PlayerAPI.fromMinecraft(player));
}
return players;
}
@Override
public QueryAPI query() {
return QueryAPI.fromMinecraft(getServer());
}
}