From b79a462a1df32a39544cd8a9e6359a5621790682 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 12 Oct 2023 20:53:57 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontleaves/bungeecross/BungeeCross.java | 3 +- .../configuration/ServerEnable.java | 113 ++++++++++++++++-- src/main/resources/config.yml | 64 ++++++++-- src/main/resources/lang.yml | 0 4 files changed, 160 insertions(+), 20 deletions(-) create mode 100644 src/main/resources/lang.yml diff --git a/src/main/java/com/frontleaves/bungeecross/BungeeCross.java b/src/main/java/com/frontleaves/bungeecross/BungeeCross.java index c0ecb66..c173dd9 100644 --- a/src/main/java/com/frontleaves/bungeecross/BungeeCross.java +++ b/src/main/java/com/frontleaves/bungeecross/BungeeCross.java @@ -28,8 +28,9 @@ public final class BungeeCross extends Plugin { // 注册指令 getProxy().getPluginManager().registerCommand(this, new PluginInfoCommand("bungeecross")); getProxy().getPluginManager().registerCommand(this, new ProxyServerListCommand("server-list")); - getProxy().getPluginManager().registerCommand(this, new ReturnHubCommand("hub", this)); + getProxy().getPluginManager().registerCommand(this, new ReturnHubCommand("lobby", this)); getProxy().getPluginManager().registerCommand(this, new SendToServerCommand("serverTo", this)); + getProxy().getPluginManager().registerCommand(this, new SendToServerCommand("sto", this)); // 注册监听器 getProxy().getPluginManager().registerListener(this, new PlayerJoinProxyEvent()); } diff --git a/src/main/java/com/frontleaves/bungeecross/configuration/ServerEnable.java b/src/main/java/com/frontleaves/bungeecross/configuration/ServerEnable.java index a3f193d..a46aea6 100644 --- a/src/main/java/com/frontleaves/bungeecross/configuration/ServerEnable.java +++ b/src/main/java/com/frontleaves/bungeecross/configuration/ServerEnable.java @@ -2,6 +2,7 @@ package com.frontleaves.bungeecross.configuration; import com.frontleaves.bungeecross.BungeeCross; import lombok.RequiredArgsConstructor; +import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.ConfigurationProvider; import net.md_5.bungee.config.YamlConfiguration; @@ -26,8 +27,18 @@ public class ServerEnable { */ public void serverStart() { this.getConfig(); + this.getLang(); this.getProxyServer(); + System.out.println(VariableStorage.getPrefix() + "§c配置文件加载完毕"); + System.out.println("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[="); + System.out.println("§6作者:§e" + BungeeCross.getAUTHOR()); + System.out.println("§9版本:§d" + BungeeCross.getVERSION()); + System.out.println("§9§l§m=]=======§2 Bungee§aCross §9§l§m========[="); + } + + private void getLang() { + } /** @@ -43,7 +54,7 @@ public class ServerEnable { } File configFile = new File(plugin.getDataFolder(), "config.yml"); if (!configFile.exists()) { - saveDefaultConfig(configFile); + saveDefaultConfigYmlFile(configFile); plugin.getLogger().info("配置文件创建成功"); } } @@ -64,24 +75,96 @@ public class ServerEnable { } // 读取配置文件 - if (config.getString("server_prefix") != null && !config.getString("server_prefix").isEmpty()) { - VariableStorage.setPrefix(config.getString("server_prefix")); + if (config.getString("bungee-cord.server-prefix") != null && !config.getString("bungee-cord.server-prefix").isEmpty()) { + VariableStorage.setPrefix(config.getString("bungee-cord.server-prefix")); } else { VariableStorage.setPrefix("§7[§2Bungee§aCross§7] §r"); } // 读取登录服务器 - if (config.getList("server_login").isEmpty()) { + if (config.getList("bungee-cord.server-login").isEmpty()) { this.reloadTheDefaultConfig(configFile); return; } else { - VariableStorage.setLoginServer(config.getList("server_login")); + VariableStorage.setLoginServer(config.getList("bungee-cord.server-login")); } // 读取大厅服务器 - if (config.getList("server_lobby").isEmpty()) { + if (config.getList("bungee-cord.server-lobby").isEmpty()) { this.reloadTheDefaultConfig(configFile); + return; } else { - VariableStorage.setLobbyServer(config.getList("server_login")); + VariableStorage.setLobbyServer(config.getList("bungee-cord.server-login")); } + // 获取登陆提醒 + if (config.getString("bungee-cord.login-reminder") != null && !config.getString("bungee-cord.login-reminder").isEmpty()) { + VariableStorage.setBungeeCordReminder(config.getBoolean("bungee-cord.login-reminder")); + if (config.getString("bungee-cord.join-message") != null && !config.getString("bungee-cord.join-message").isEmpty()) { + VariableStorage.setJoinMessage(config.getString("bungee-cord.join-message")); + } else { + VariableStorage.setJoinMessage("§7[§a+§7] §6%player%"); + } + if (config.getString("bungee-cord.leave-message") != null && !config.getString("bungee-cord.leave-message").isEmpty()) { + VariableStorage.setLeaveMessage(config.getString("bungee-cord.leave-message")); + } else { + VariableStorage.setLeaveMessage("§7[§c-§7] §6%player%"); + } + } else { + config.set("bungee-cord.login-reminder", true); + VariableStorage.setBungeeCordReminder(true); + } + // 是否开启管理员静默登录 + if (config.getString("bungee-cord.login-silent") != null && !config.getString("bungee-cord.login-silent").isEmpty()) { + VariableStorage.setBungeeSilent(config.getBoolean("bungee-cord.login-silent")); + } else { + config.set("bungee-cord.login-silent", true); + VariableStorage.setBungeeSilent(true); + } + + // 获取服务器列表 + + plugin.getProxy().getServers().forEach((string, serverInfo) -> { + if (config.getSection("server").getKeys().contains(string)) { + if (config.getString("server." + string + ".display-name") == null && config.getString("server." + string + ".display-name").isEmpty()) { + this.reloadTheDefaultConfig(configFile); + return; + } + if (config.getString("server." + string + ".bungee-join-server-reminder") == null && config.getString("server." + string + ".bungee-join-server-reminder").isEmpty()) { + this.reloadTheDefaultConfig(configFile); + return; + } + if (config.getString("server." + string + ".join-server-inform.join-enable") == null && config.getString("server." + string + ".join-server-inform.join-enable").isEmpty()) { + this.reloadTheDefaultConfig(configFile); + return; + } + if (config.getString("server." + string + ".join-server-inform.leave-enable") == null && config.getString("server." + string + ".join-server-inform.leave-enable").isEmpty()) { + this.reloadTheDefaultConfig(configFile); + return; + } + if (config.getString("server." + string + ".join-server-inform.join-message") == null && config.getString("server." + string + ".join-server-inform.join-message").isEmpty()) { + this.reloadTheDefaultConfig(configFile); + return; + } + if (config.getString("server." + string + ".join-server-inform.leave-message") == null && config.getString("server." + string + ".join-server-inform.leave-message").isEmpty()) { + this.reloadTheDefaultConfig(configFile); + } + } else { + config.set("server." + serverInfo.getName() + ".display-name", serverInfo.getName()); + config.set("server." + serverInfo.getName() + ".bungee-join-server-reminder", true); + config.set("server." + serverInfo.getName() + ".join-server-inform.join-enable", true); + config.set("server." + serverInfo.getName() + ".join-server-inform.leave-enable", true); + config.set("server." + serverInfo.getName() + ".join-server-inform.join-message", "[+] %player% 加入到 %server_display% 服务器"); + config.set("server." + serverInfo.getName() + ".join-server-inform.leave-message", "[-] %player% 加入到 %server_display% 服务器"); + } + }); + try { + ConfigurationProvider.getProvider(YamlConfiguration.class).save(config, configFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private boolean checkServerNameCorrect(String serverName) { + ServerInfo serverInfo = plugin.getProxy().getServerInfo(serverName); + return serverInfo != null; } /** @@ -96,7 +179,7 @@ public class ServerEnable { * * @param configFile File */ - private void saveDefaultConfig(@NotNull File configFile) { + private void saveDefaultConfigYmlFile(@NotNull File configFile) { // 将默认配置文件从资源中复制到插件目录 try (InputStream inputStream = plugin.getResourceAsStream("config.yml")) { Files.copy(inputStream, configFile.toPath()); @@ -104,6 +187,15 @@ public class ServerEnable { throw new RuntimeException(e); } } + + private void saveDefaultLangYmlFile(@NotNull File langFile) { + // 将默认配置文件从资源中复制到插件目录 + try (InputStream inputStream = plugin.getResourceAsStream("lang.yml")) { + Files.copy(inputStream, langFile.toPath()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } /** * 重新载入新的配置文件 @@ -112,10 +204,13 @@ public class ServerEnable { */ private void reloadTheDefaultConfig(@NotNull File configFile) { File newConfigFile = new File(plugin.getDataFolder(), "config.old.yml"); + if (newConfigFile.exists()) { + newConfigFile.delete(); + } try { Files.copy(configFile.toPath(), newConfigFile.toPath()); if (configFile.delete()) { - this.saveDefaultConfig(configFile); + this.saveDefaultConfigYmlFile(configFile); plugin.getLogger().warning("配置文件错误,已重新生成新的文件"); plugin.getLogger().info("旧配置文件已生成 config.old.yml"); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index f13b641..3947356 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,15 +1,59 @@ -# BungeeCross +# ################################## +# PluginName: BungeeCross # Author: 筱锋xiao_lfeng # Version: v1.0-SNAPSHOT +# ################################## -# 显示前缀 -server_prefix: "§7[§2Bungee§aCross§7] §r" +# ################################## +# 插件配置 +# ################################## -# 登录服务器列表 -server_login: - - login_1 - - login_2 +# 授权码 +authorization-code: #请勿填写 -# 大厅服务器列表 -server_lobby: - - 登陆大厅 +# ################################## +# BungeeCord 服务端配置 +# ################################## +bungee-cord: + # 前缀配置 + server-prefix: "§7[§2Bungee§aCross§7] §r" + # 登录服务器列表 + server-login: + - login_1 + - login_2 + # 大厅服务器列表 + server-lobby: + - 登陆大厅 + # 是否开启登陆提醒 + login-reminder: true + # 加入提醒 + join-message: "[+] %player%" + # 离开提醒 + leave-message: "[-] %player%" + # 是否开启有权限的人静默登录 + login-silent: true + +# ################################## +# Server 子服务端配置 +# ################################## +server: + login_1: + # 展示名字 + display-name: "登录一服" + # 是否允许 BungeeCord 登录提醒 + bungee-join-server-reminder: false + join-server-inform: + join-enable: true + leave-enable: true + join-message: "[+] %player% 加入到 %server_display% 服务器" + leave-message: "[-] %player% 离开了 %server_display% 服务器" + login_2: + # 展示名字 + display-name: "登录二服" + # 是否允许 BungeeCord 登录提醒 + bungee-join-server-reminder: false + join-server-inform: + join-enable: true + leave-enable: true + join-message: "[+] %player% 加入到 %server_display% 服务器" + leave-message: "[-] %player% 离开了 %server_display% 服务器" \ No newline at end of file diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml new file mode 100644 index 0000000..e69de29