mirror of
https://github.com/CarmJos/cn2b2t-project.git
synced 2026-06-04 08:48:16 +08:00
移除服务器自动添加
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user