2020-08-06 22:31:57 +00:00
|
|
|
package xyz.etztech.serverapi;
|
|
|
|
|
|
|
|
|
2020-08-07 21:38:17 +00:00
|
|
|
import org.bukkit.BanEntry;
|
|
|
|
import org.bukkit.BanList;
|
2020-10-06 23:20:02 +00:00
|
|
|
import org.bukkit.Bukkit;
|
2020-08-07 19:30:36 +00:00
|
|
|
import org.bukkit.World;
|
|
|
|
import org.bukkit.entity.Player;
|
2020-08-12 00:43:42 +00:00
|
|
|
import org.bukkit.plugin.Plugin;
|
2020-08-06 22:31:57 +00:00
|
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
|
import xyz.etztech.serverapi.commands.MainCommand;
|
2020-11-09 03:55:43 +00:00
|
|
|
import xyz.etztech.serverapi.listeners.AsyncPlayerChatListener;
|
2020-10-06 23:20:02 +00:00
|
|
|
import xyz.etztech.serverapi.token.TokenList;
|
2020-08-07 19:30:36 +00:00
|
|
|
import xyz.etztech.serverapi.tps.TPS;
|
|
|
|
import xyz.etztech.serverapi.web.IProvider;
|
|
|
|
import xyz.etztech.serverapi.web.Web;
|
|
|
|
import xyz.etztech.serverapi.web.api.*;
|
2020-08-06 22:31:57 +00:00
|
|
|
|
2020-08-12 00:43:42 +00:00
|
|
|
import java.util.*;
|
2020-08-06 22:31:57 +00:00
|
|
|
import java.util.logging.Logger;
|
|
|
|
|
2020-08-07 19:30:36 +00:00
|
|
|
public class ServerAPI extends JavaPlugin implements IProvider {
|
2020-08-06 22:31:57 +00:00
|
|
|
|
|
|
|
private static ServerAPI instance;
|
2020-08-07 19:30:36 +00:00
|
|
|
private static TPS tps;
|
|
|
|
private Web web = new Web(this);
|
2020-08-06 22:31:57 +00:00
|
|
|
private final Logger log = Logger.getLogger( "Minecraft" );
|
|
|
|
|
2020-11-09 03:55:43 +00:00
|
|
|
private static final List<ChatAPI> chat = new ArrayList<>();
|
|
|
|
|
2020-08-07 19:30:36 +00:00
|
|
|
@Override
|
2020-08-06 22:31:57 +00:00
|
|
|
public void onEnable() {
|
|
|
|
instance = this;
|
2020-08-07 19:30:36 +00:00
|
|
|
web = new Web(this);
|
2020-08-06 22:31:57 +00:00
|
|
|
saveDefaultConfig();
|
|
|
|
reloadConfig();
|
|
|
|
|
|
|
|
if (isEnabled()) {
|
2020-11-09 03:55:43 +00:00
|
|
|
new AsyncPlayerChatListener(this);
|
2020-08-06 22:31:57 +00:00
|
|
|
new MainCommand(this);
|
2020-08-07 19:30:36 +00:00
|
|
|
|
|
|
|
tps = new TPS();
|
|
|
|
getServer().getScheduler().scheduleSyncRepeatingTask(this, tps, 1000, 50);
|
2020-08-06 22:31:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-07 19:30:36 +00:00
|
|
|
@Override
|
|
|
|
public void onDisable() {
|
|
|
|
web.stop();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void reloadConfig() {
|
|
|
|
super.reloadConfig();
|
|
|
|
web.stop();
|
|
|
|
web.start(
|
|
|
|
getConfig().getInt("port", 8080),
|
2020-10-06 23:20:02 +00:00
|
|
|
new TokenList(getConfig().getConfigurationSection("auth")),
|
|
|
|
getConfig().getStringList("custom")
|
2020-08-07 19:30:36 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2020-08-06 22:31:57 +00:00
|
|
|
public void log(String message) {
|
|
|
|
log.info( "[ServerAPI]: " + message );
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ServerAPI getInstance() {
|
|
|
|
return instance;
|
|
|
|
}
|
2020-08-07 19:30:36 +00:00
|
|
|
|
|
|
|
public static TPS getTPS() {
|
|
|
|
return tps;
|
|
|
|
}
|
|
|
|
|
2020-11-09 03:55:43 +00:00
|
|
|
public static List<ChatAPI> getChat() {
|
|
|
|
return chat;
|
|
|
|
}
|
|
|
|
|
2020-08-07 19:30:36 +00:00
|
|
|
@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);
|
|
|
|
}
|
|
|
|
}
|
2020-08-07 21:38:17 +00:00
|
|
|
return new WorldAPI("unknown", 0, 0, WorldAPI.WEATHER_UNKNOWN);
|
2020-08-07 19:30:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@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
|
2020-08-07 21:38:17 +00:00
|
|
|
public Set<BanAPI> bans() {
|
|
|
|
Set<BanAPI> bans = new HashSet<>();
|
|
|
|
for (BanEntry entry : getServer().getBanList(BanList.Type.NAME).getBanEntries()) {
|
|
|
|
bans.add(BanAPI.fromMinecraft(entry));
|
2020-08-07 19:30:36 +00:00
|
|
|
}
|
2020-08-07 21:38:17 +00:00
|
|
|
return bans;
|
2020-08-07 19:30:36 +00:00
|
|
|
}
|
|
|
|
|
2020-11-09 03:55:43 +00:00
|
|
|
@Override
|
|
|
|
public List<ChatAPI> chat() {
|
|
|
|
return chat;
|
|
|
|
}
|
|
|
|
|
2020-10-06 23:20:02 +00:00
|
|
|
@Override
|
|
|
|
public void kick(BanAPI kick) {
|
|
|
|
Player player = Bukkit.getPlayerExact(kick.getTarget());
|
|
|
|
if (player != null) {
|
2021-02-28 04:12:31 +00:00
|
|
|
getServer().getScheduler().runTask(this, () -> {
|
|
|
|
player.kickPlayer("You have been kicked: " + kick.getReason());
|
|
|
|
});
|
2020-10-06 23:20:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void ban(BanAPI ban) {
|
|
|
|
Date expires = null;
|
|
|
|
if (ban.getExpiration() != 0) {
|
|
|
|
expires = new Date(ban.getExpiration());
|
|
|
|
}
|
|
|
|
Bukkit.getBanList(BanList.Type.NAME).addBan(ban.getTarget(), ban.getReason(), expires, "ServerAPI");
|
|
|
|
Player player = Bukkit.getPlayerExact(ban.getTarget());
|
|
|
|
if (player != null) {
|
2021-02-28 04:12:31 +00:00
|
|
|
getServer().getScheduler().runTask(this, () -> {
|
|
|
|
player.kickPlayer("You have been banned: " + ban.getReason());
|
|
|
|
});
|
2020-10-06 23:20:02 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void unban(BanAPI ban) {
|
|
|
|
Bukkit.getBanList(BanList.Type.NAME).pardon(ban.getTarget());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void broadcast(BroadcastAPI broadcast) {
|
|
|
|
Bukkit.broadcastMessage(String.format("%s > %s", broadcast.getFrom(), broadcast.getMessage()));
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void custom(CustomAPI custom) {
|
|
|
|
getServer().getScheduler().runTask(this, () -> {
|
|
|
|
getServer().dispatchCommand(getServer().getConsoleSender(), custom.build());
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2020-08-07 19:30:36 +00:00
|
|
|
@Override
|
2020-08-12 00:43:42 +00:00
|
|
|
public PingAPI ping() {
|
|
|
|
return PingAPI.fromMinecraft(getServer());
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<PluginAPI> plugins() {
|
|
|
|
List<PluginAPI> plugins = new ArrayList<>();
|
|
|
|
for (Plugin plugin : getServer().getPluginManager().getPlugins()) {
|
|
|
|
plugins.add(PluginAPI.fromMinecraft(plugin));
|
|
|
|
}
|
|
|
|
return plugins;
|
2020-08-07 19:30:36 +00:00
|
|
|
}
|
2020-08-06 22:31:57 +00:00
|
|
|
}
|
|
|
|
|