1
mirror of https://github.com/CarmJos/cn2b2t-project.git synced 2026-06-04 08:48:16 +08:00

移除服务器自动添加

This commit is contained in:
carm
2020-06-11 22:08:06 +08:00
parent 1d6b94dc01
commit 60cda5f433
22 changed files with 242 additions and 1274 deletions
@@ -12,7 +12,6 @@ import org.cn2b2t.core.managers.users.UserValueManager;
import org.cn2b2t.core.managers.utils.ConfigManager;
import org.cn2b2t.core.managers.utils.DataManager;
import org.cn2b2t.core.managers.utils.MessagerManager;
import org.cn2b2t.core.managers.utils.ServersManager;
import org.cn2b2t.core.utils.ColorParser;
import java.util.logging.Level;
@@ -38,18 +37,6 @@ public class Main extends JavaPlugin {
log("&7├ &f启用Messager系统...");
MessagerManager.enable();
MessagerManager.registerChannel("chat");
//
log("&7├ &f启用跨服管理器...");
ServersManager.init();
if (Main.getInstance().getConfig().getBoolean("Servers.auto-register", true)) {
log("&7├ &f检测到启用自动注册,即将尝试向 SYSTEM.CONENCTION 注册。");
ServersManager.registerServer(
"single-" + Integer.toHexString(Bukkit.getPort()),
(Bukkit.getServer().getIp() == null || Bukkit.getServer().getIp().equalsIgnoreCase("") ? "127.0.0.1" : Bukkit.getServer().getIp()),
Bukkit.getPort(),
"cn2b2t"
);
}
log("&7├ &f启用用户Value管理器....");
UserValueManager.init();
@@ -72,10 +59,7 @@ public class Main extends JavaPlugin {
@Override
public void onDisable() {
log("&c&LGhost &f" + this.getName().substring(5) + " &7开始卸载...");
log("&7├ &f移除服务器");
ServersManager.unregisterServer();
log(this.getName() + " &7开始卸载...");
log("&7├ &f卸载监听器...");
Bukkit.getServicesManager().unregisterAll(this);
@@ -1,23 +1,15 @@
package org.cn2b2t.core.managers.utils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.cn2b2t.core.Main;
import org.cn2b2t.core.listener.ServersUpdateListener;
import org.cn2b2t.core.modules.DataServerInfo;
import org.cn2b2t.core.modules.LocalServerInfo;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -25,94 +17,6 @@ public class ServersManager {
public static List<Player> requests = new ArrayList<>();
public static String databaseTable = "game_servers";
public static String messageChannel = "serversmanager";
private static LocalServerInfo localRegisteredServer;
private static Map<String/*serverID*/, DataServerInfo> dataServers = new HashMap<>();
private static BukkitRunnable updateRunnable;
public static void init() {
Main.regListener(new ServersUpdateListener());
updateRunnable = new BukkitRunnable() {
@Override
public void run() {
if (Bukkit.getOnlinePlayers().size() > 0) updateDataServers();
}
};
getUpdateRunnable().runTaskTimer(Main.getInstance(), 20L, 100L);
}
public static void registerServer(String serverID, String hostName, int port, String serverGroup) {
localRegisteredServer = new LocalServerInfo(serverID, hostName, port, serverGroup);
localRegisteredServer.register();
}
public static void unregisterServer() {
if (getLocalRegisteredServer() != null) {
getLocalRegisteredServer().unregister();
localRegisteredServer = null;
}
}
public static void updateDataServers() {
Map<String, DataServerInfo> tempDataServers = new HashMap<>();
ResultSet rs = DataManager.getConnection().SQLqueryInTable(ServersManager.databaseTable);
try {
if (rs != null) {
while (rs.next()) {
String serverID = rs.getString("serverid");
String hostName = rs.getString("hostname");
String serverGroup = rs.getString("servergroup");
int players = rs.getInt("players");
int port = rs.getInt("port");
tempDataServers.put(serverID, new DataServerInfo(serverID, hostName, port, serverGroup, players));
}
rs.close();
}
} catch (SQLException e) {
DataManager.getConnection().info(e.getLocalizedMessage());
Bukkit.getLogger().log(Level.WARNING, "code: {0}", rs);
}
dataServers = tempDataServers;
}
public static Map<String, DataServerInfo> getDataServers() {
return dataServers;
}
public static Integer getPlayers(String serverName) {
return getPlayers(serverName, false);
}
public static Integer getPlayers(String server, boolean isGroup) {
if (server.equalsIgnoreCase("#ALL") || server.equalsIgnoreCase("#AII")) {
return getDataServers().keySet().stream()
.mapToInt(s -> getDataServers().getOrDefault(s, new DataServerInfo(null, null, -1, null, 0)).getPlayers())
.sum();
} else {
if (isGroup) {
return getDataServers().keySet().stream()
.filter(s -> getDataServers().get(s).getServerGroup().equalsIgnoreCase(server))
.mapToInt(s -> getDataServers().getOrDefault(s, new DataServerInfo(null, null, -1, null, 0)).getPlayers())
.sum();
} else {
return getDataServers().getOrDefault(server, new DataServerInfo(null, null, -1, null, 0)).getPlayers();
}
}
}
public static BukkitRunnable getUpdateRunnable() {
return updateRunnable;
}
public static void teleport(Player p, String server) {
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);
@@ -147,36 +51,11 @@ public class ServersManager {
public static void goAFK(Player p) {
DataServerInfo targetServer = getServerInfo("LIMBO");
if (targetServer != null) {
teleport(p, targetServer.getServerID());
} else {
p.sendMessage("§7暂无可用挂机服务器。");
}
teleport(p, "LIMBO");
}
public static DataServerInfo getServerInfo(String name) {
if (getDataServers().containsKey(name)) {
return getDataServers().get(name);
} else {
for (DataServerInfo info : getDataServers().values()) {
if (info.getServerGroup().equalsIgnoreCase(name)) {
return info;
}
}
return null;
}
}
public static LocalServerInfo getLocalRegisteredServer() {
return localRegisteredServer;
}
public static void switchServer(Player p, String targetServerIp) {
p.sendPluginMessage(Main.getInstance(), "BeeSwitch", targetServerIp.getBytes(StandardCharsets.UTF_8));
}