diff --git a/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Query.java b/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Query.java index 374acd3..741561a 100644 --- a/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Query.java +++ b/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Query.java @@ -1,16 +1,14 @@ package fun.suya.suisuroru.commands.execute.othercommands.config; import fun.suya.suisuroru.config.Config; -import fun.suya.suisuroru.config.ConfigKeys; -import fun.suya.suisuroru.config.ConfigRemap; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -import java.util.Map; +import static fun.suya.suisuroru.config.ConfigManager.getConfigFieldNames; import static fun.xd.suka.Main.LOGGER; /** @@ -20,8 +18,6 @@ */ public class Query implements CommandExecutor { - private static final Map CONFIG_KEYS_MAP = ConfigKeys.configKeysList; - @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { // 检查发送者是否具有OP权限 @@ -35,17 +31,16 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command } else if (command.getName().equals("baseplugin")) { sender.sendMessage("§c/baseplugin config query [查询配置]"); } - String allConfigNames = String.join("|", CONFIG_KEYS_MAP.keySet()); + String allConfigNames = String.join("|", getConfigFieldNames()); sender.sendMessage("§a所有配置项名称: " + allConfigNames); } else { String configName = args[0]; - if (!CONFIG_KEYS_MAP.containsKey(configName)) { + if (!getConfigFieldNames().contains(configName)) { sender.sendMessage("§c配置项 " + configName + " 不存在,请检查拼写"); return true; } - String internalConfigName = ConfigRemap.configMapping.get(configName); try { - Field field = Config.class.getDeclaredField(internalConfigName); + Field field = Config.class.getDeclaredField(configName); Object value = field.get(null); sender.sendMessage("§a配置项 " + configName + " 当前的值为: " + value); } catch (NoSuchFieldException | IllegalAccessException e) { diff --git a/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Set.java b/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Set.java index 12b40da..969594a 100644 --- a/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Set.java +++ b/src/main/java/fun/suya/suisuroru/commands/execute/othercommands/config/Set.java @@ -1,14 +1,12 @@ package fun.suya.suisuroru.commands.execute.othercommands.config; -import fun.suya.suisuroru.config.ConfigKeys; import fun.suya.suisuroru.config.ConfigManager; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; -import java.util.Map; - +import static fun.suya.suisuroru.config.ConfigManager.getConfigFieldNames; import static fun.xd.suka.Main.LOGGER; /** @@ -17,7 +15,6 @@ * function: Set new config */ public class Set implements CommandExecutor { - private static final Map CONFIG_KEYS_MAP = ConfigKeys.configKeysList; ConfigManager configManager = new ConfigManager(); @Override @@ -33,7 +30,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command } else if (command.getName().equals("baseplugin")) { sender.sendMessage("§c/baseplugin config set [修改参数] [修改值]"); } - String allConfigNames = String.join("|", CONFIG_KEYS_MAP.keySet()); + String allConfigNames = String.join("|", getConfigFieldNames()); sender.sendMessage("§a所有配置项名称: " + allConfigNames); return true; } @@ -42,16 +39,13 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command String value = args[1]; // 检查配置项是否存在 - if (!CONFIG_KEYS_MAP.containsKey(configName)) { + if (!getConfigFieldNames().contains(configName)) { sender.sendMessage("§c配置项 " + configName + " 不存在,请检查拼写"); return true; } - ConfigKeys key = CONFIG_KEYS_MAP.get(configName); try { - configManager.setConfigValue(key, value); - configManager.save(); - configManager.load(); + configManager.setConfigValue(configName, value); sender.sendMessage("§a配置项 " + configName + " 已成功设置为 " + value); } catch (Exception e) { sender.sendMessage("§c修改配置项 " + configName + " 的值时出错,请检查配置文件或联系开发人员。"); diff --git a/src/main/java/fun/suya/suisuroru/commands/execute/vanilla/Ban.java b/src/main/java/fun/suya/suisuroru/commands/execute/vanilla/Ban.java index 661f2fd..fe26b9e 100644 --- a/src/main/java/fun/suya/suisuroru/commands/execute/vanilla/Ban.java +++ b/src/main/java/fun/suya/suisuroru/commands/execute/vanilla/Ban.java @@ -26,8 +26,8 @@ public static void BanMessage(String message) { Bukkit.broadcastMessage("本地黑名单: " + message); try { if (Config.QQRobotEnabled) { - Main.BOT.getGroup(Config.syncChatGroup).sendMessage(message); - Main.BOT.getGroup(Config.reportGroup).sendMessage(message); + Main.BOT.getGroup(Config.SyncChatGroup).sendMessage(message); + Main.BOT.getGroup(Config.ReportGroup).sendMessage(message); } } catch (Exception e) { Main.LOGGER.info("Error when report message to QQ group"); @@ -75,7 +75,7 @@ private void TransferToUnionBan(Player targetPlayer, CommandSender sender, Strin String message = "玩家 " + targetPlayer.getName() + " 已被 " + sender.getName() + " 以[ " + reason + " ]的理由封禁"; BanMessage(message); if (!Config.UnionBanCheckOnly) { - reportBanData(new UnionBanMain.BanPair<>(targetPlayer.getUniqueId(), reason, new Date(), Config.servername)); + reportBanData(new UnionBanMain.BanPair<>(targetPlayer.getUniqueId(), reason, new Date(), Config.ServerName)); } } } diff --git a/src/main/java/fun/suya/suisuroru/commands/tab/othercommands/ConfigTab.java b/src/main/java/fun/suya/suisuroru/commands/tab/othercommands/ConfigTab.java index c88dcee..907736a 100644 --- a/src/main/java/fun/suya/suisuroru/commands/tab/othercommands/ConfigTab.java +++ b/src/main/java/fun/suya/suisuroru/commands/tab/othercommands/ConfigTab.java @@ -1,6 +1,5 @@ package fun.suya.suisuroru.commands.tab.othercommands; -import fun.suya.suisuroru.config.ConfigKeys; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; @@ -10,6 +9,8 @@ import java.util.ArrayList; import java.util.List; +import static fun.suya.suisuroru.config.ConfigManager.getConfigFieldNames; + /** * @author Suisuroru * Date: 2024/10/18 22:11 @@ -26,7 +27,7 @@ public List onTabComplete(@NotNull CommandSender sender, @NotNull Comman completions.add("set"); } else if (args.length == 2) { if (args[0].equals("query") || args[0].equals("set")) { - completions.addAll(ConfigKeys.configKeysList.keySet()); + completions.addAll(getConfigFieldNames()); } } return completions; diff --git a/src/main/java/fun/suya/suisuroru/config/Config.java b/src/main/java/fun/suya/suisuroru/config/Config.java index 96dddd5..3a6008b 100644 --- a/src/main/java/fun/suya/suisuroru/config/Config.java +++ b/src/main/java/fun/suya/suisuroru/config/Config.java @@ -6,34 +6,34 @@ * function: Initialize config format */ public class Config { - public static boolean VanillaCommandsRewritten; - public static boolean qqCheckEnabled; - public static boolean syncChatEnabled; - public static boolean SyncChatEnabledQ2SOnly; - public static String botWsUrl; - public static String botWsToken; - public static long syncChatGroup; - public static long reportGroup; - public static String joinServerMessage; - public static String leaveServerMessage; - public static String sayServerMessage; - public static String sayQQMessage; - public static String reportMessage; - public static String disTitle; - public static String webhookUrl; - public static String servername; - public static boolean RconEnabled; - public static String ExecuteCommandPrefix; - public static String RconEnabledGroups; - public static String RconIP; - public static int RconPort; - public static String RconPassword; - public static boolean RconEnforceOperator; - public static boolean QQRobotEnabled; - public static boolean UnionBanEnabled; - public static boolean UnionBanCheckOnly; - public static String UnionBanCheckUrl; - public static String UnionBanReportUrl; - public static String UnionBanReportKey; - public static String QQCheckStartWord; -} + public static boolean VanillaCommandsRewritten = true; + public static boolean QQCheckEnabled = true; + public static boolean SyncChatEnabled = true; + public static boolean SyncChatEnabledQ2SOnly = false; + public static String BotWsUrl = "ws://0.0.0.0:3001"; + public static String BotWsToken = "114514"; + public static long SyncChatGroup = 123456L; + public static long ReportGroup = 123456L; + public static String JoinServerMessage = "%NAME% joined the server"; + public static String LeaveServerMessage = "%NAME% left the server"; + public static String SayServerMessage = "%NAME%: %MESSAGE%"; + public static String SayQQMessage = "[QQ] %NAME%: %MESSAGE%"; + public static String ReportMessage = "%NAME% was logging in \nIP: %IP% %IPINFO% \nLoginResult: %RESULT%"; + public static String DisTitle = "[QQLogin] 请完成登录验证, 验证码: %CODE%"; + public static String WebhookUrl = "http://localhost:6888/webhook"; + public static String ServerName = "ServerName"; + public static boolean RconEnabled = true; + public static String ExecuteCommandPrefix = "*#"; + public static String RconEnabledGroups = "123456;234567"; + public static String RconIP = "0.0.0.0"; + public static int RconPort = 25575; + public static String RconPassword = "password"; + public static boolean RconEnforceOperator = true; + public static boolean QQRobotEnabled = true; + public static boolean UnionBanEnabled = false; + public static boolean UnionBanCheckOnly = false; + public static String UnionBanCheckUrl = "https://example.com"; + public static String UnionBanReportUrl = "https://example.com"; + public static String UnionBanReportKey = "your_report_key"; + public static String QQCheckStartWord = "Check#"; +} \ No newline at end of file diff --git a/src/main/java/fun/suya/suisuroru/config/ConfigKeys.java b/src/main/java/fun/suya/suisuroru/config/ConfigKeys.java deleted file mode 100644 index b746c3a..0000000 --- a/src/main/java/fun/suya/suisuroru/config/ConfigKeys.java +++ /dev/null @@ -1,66 +0,0 @@ -package fun.suya.suisuroru.config; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author Suisuroru - * Date: 2024/10/14 22:41 - * function: Set of all config keys - */ -public enum ConfigKeys { - VanillaCommandsRewritten(Boolean.class, true), - QQCheckEnabled(Boolean.class, true), - SyncChatEnabled(Boolean.class, true), - SyncChatEnabledQ2SOnly(Boolean.class, false), - BotWsUrl(String.class, "ws://0.0.0.0:3001"), - BotWsToken(String.class, "114514"), - SyncChatGroup(Long.class, 123456L), - ReportGroup(Long.class, 123456L), - JoinServerMessage(String.class, "%NAME% joined the server"), - LeaveServerMessage(String.class, "%NAME% left the server"), - SayServerMessage(String.class, "%NAME%: %MESSAGE%"), - SayQQMessage(String.class, "[QQ] %NAME%: %MESSAGE%"), - ReportMessage(String.class, "%NAME% was logging in \nIP: %IP% %IPINFO% \nLoginResult: %RESULT%"), - DisTitle(String.class, "[QQLogin] 请完成登录验证, 验证码: %CODE%"), - WebhookUrl(String.class, "http://localhost:6888/webhook"), - ServerName(String.class, "ServerName"), - RconEnabled(Boolean.class, true), - ExecuteCommandPrefix(String.class, "*#"), - RconEnabledGroups(String.class, "123456;234567"), - RconIP(String.class, "0.0.0.0"), - RconPort(Integer.class, 25575), - RconPassword(String.class, "password"), - RconEnforceOperator(Boolean.class, true), - QQRobotEnabled(Boolean.class, true), - UnionBanEnabled(Boolean.class, false), - UnionBanCheckOnly(Boolean.class, false), - UnionBanCheckUrl(String.class, "https://example.com"), - UnionBanReportUrl(String.class, "https://example.com"), - UnionBanReportKey(String.class, "your_report_key"), - QQCheckStartWord(String.class, "Check#"); - - public static final Map configKeysList = new HashMap<>(); - - static { - for (ConfigKeys key : ConfigKeys.values()) { - configKeysList.put(key.name(), key); - } - } - - private final Class type; - private final Object defaultValue; - - ConfigKeys(Class type, Object defaultValue) { - this.type = type; - this.defaultValue = defaultValue; - } - - public Class getType() { - return type; - } - - public Object getDefaultValue() { - return defaultValue; - } -} diff --git a/src/main/java/fun/suya/suisuroru/config/ConfigManager.java b/src/main/java/fun/suya/suisuroru/config/ConfigManager.java index 5af2e4d..198c439 100644 --- a/src/main/java/fun/suya/suisuroru/config/ConfigManager.java +++ b/src/main/java/fun/suya/suisuroru/config/ConfigManager.java @@ -7,27 +7,40 @@ import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; -import java.util.Map; +import java.util.ArrayList; +import java.util.List; import java.util.Properties; -import static fun.suya.suisuroru.config.Config.QQCheckStartWord; import static fun.xd.suka.Main.LOGGER; /** * @author Suisuroru * Date: 2024/10/14 23:41 - * function: Manage config, rewrited by Suisuroru in 241014 - * additon: Config:代码层名字; ConfigKeys:配置项名字; - * 由于遇到一些问题,两个配置文件暂时无法合并 + * function: Manage config, rewrote by Suisuroru in 250121 */ public class ConfigManager { - private static final Map configMapping = ConfigRemap.configMapping; + + public static List getConfigFieldNames() { + Field[] fields = Config.class.getDeclaredFields(); + List fieldNames = new ArrayList<>(); + for (Field field : fields) { + fieldNames.add(field.getName()); + } + return fieldNames; + } private static @NotNull Properties getDefaultProperties() { Properties properties = new Properties(); + List fieldNames = getConfigFieldNames(); - for (ConfigKeys key : ConfigKeys.values()) { - properties.setProperty(key.name(), key.getDefaultValue().toString()); + for (String fieldName : fieldNames) { + try { + Field field = Config.class.getDeclaredField(fieldName); + field.setAccessible(true); + properties.setProperty(fieldName, field.get(null).toString()); + } catch (NoSuchFieldException | IllegalAccessException e) { + LOGGER.warning("Failed to get default config value for " + fieldName + ": " + e.getMessage()); + } } return properties; @@ -35,16 +48,13 @@ public class ConfigManager { private static @NotNull Properties getProperties() { Properties properties = new Properties(); - - // 遍历 Config 类中的所有字段,并将它们的值保存到 Properties 对象中 - for (Map.Entry entry : configMapping.entrySet()) { - String fieldName = null; + List fieldNames = getConfigFieldNames(); + for (String fieldName : fieldNames) { try { - String key = entry.getKey(); - fieldName = entry.getValue(); - Object value = getValueFromConfig(fieldName); - properties.setProperty(key, value.toString()); - } catch (Exception e) { + Field field = Config.class.getDeclaredField(fieldName); + field.setAccessible(true); + properties.setProperty(fieldName, field.get(null).toString()); + } catch (NoSuchFieldException | IllegalAccessException e) { LOGGER.warning("Failed to get config value for " + fieldName + ": " + e.getMessage()); } } @@ -52,42 +62,62 @@ public class ConfigManager { return properties; } - private static Object getValueFromConfig(String fieldName) { - try { - Field field = Config.class.getDeclaredField(fieldName); - field.setAccessible(true); - return field.get(null); - } catch (NoSuchFieldException | IllegalAccessException e) { - throw new RuntimeException("Failed to get config value for " + fieldName, e); - } - } - public void load() { - try (FileReader reader = new FileReader(Main.INSTANCE.CONFIG_FILE)) { + try (FileReader reader = new FileReader(Main.CONFIG_FILE)) { Properties properties = new Properties(); properties.load(reader); - Properties defaultProperties = getDefaultProperties(); + LOGGER.info("Loaded config file: " + Main.CONFIG_FILE.getAbsolutePath()); - for (ConfigKeys key : ConfigKeys.values()) { - // 尝试从配置文件中获取值,如果没有找到,则使用默认值 - String value = properties.getProperty(key.name(), defaultProperties.getProperty(key.name())); - setConfigValue(key, value); + Properties defaultProperties = getDefaultProperties(); + List fieldNames = getConfigFieldNames(); + boolean label = false; + + for (String fieldName : fieldNames) { + try { + Field field = Config.class.getDeclaredField(fieldName); + field.setAccessible(true); + String value = properties.getProperty(fieldName); + if (value == null) { + value = defaultProperties.getProperty(fieldName); + label = true; + } + Object parsedValue = parseValue(field.getType(), value); + field.set(null, convertToFieldType(field.getType(), parsedValue)); + } catch (NoSuchFieldException | IllegalAccessException e) { + LOGGER.warning("Failed to set config value for " + fieldName + ": " + e.getMessage()); + } } - + if (label) { + save(); + } + } catch (IOException e) { + LOGGER.warning("Failed to load config file " + Main.CONFIG_FILE.getAbsolutePath() + ": " + e.getMessage()); + LOGGER.info("Using default config values."); save(); + } + } - } catch (Exception exception) { - LOGGER.warning("Failed to load config: " + exception.getMessage()); - save(); + private Object convertToFieldType(Class fieldType, Object value) { + if (fieldType == boolean.class || fieldType == Boolean.class) { + return Boolean.parseBoolean(value.toString()); + } else if (fieldType == int.class || fieldType == Integer.class) { + return Integer.parseInt(value.toString()); + } else if (fieldType == long.class || fieldType == Long.class) { + return Long.parseLong(value.toString()); + } else { + return value; } } - public void setConfigValue(ConfigKeys key, String value) { + public void setConfigValue(String fieldName, String value) { try { - Object parsedValue = parseValue(key.getType(), value); - setConfigField(key, parsedValue); + Field field = Config.class.getDeclaredField(fieldName); + field.setAccessible(true); + Object parsedValue = parseValue(field.getType(), value); + field.set(null, parsedValue); + save(); } catch (Exception e) { - LOGGER.warning("Failed to parse config value for " + key.name() + ": " + e.getMessage()); + LOGGER.warning("Failed to parse config value for " + fieldName + ": " + e.getMessage()); } } @@ -98,46 +128,10 @@ private Object parseValue(Class type, String value) { else return value; } - private void setConfigField(ConfigKeys key, Object value) { - switch (key) { - case VanillaCommandsRewritten -> Config.VanillaCommandsRewritten = (Boolean) value; - case QQCheckEnabled -> Config.qqCheckEnabled = (Boolean) value; - case SyncChatEnabled -> Config.syncChatEnabled = (Boolean) value; - case SyncChatEnabledQ2SOnly -> Config.SyncChatEnabledQ2SOnly = (Boolean) value; - case BotWsUrl -> Config.botWsUrl = (String) value; - case BotWsToken -> Config.botWsToken = (String) value; - case SyncChatGroup -> Config.syncChatGroup = (Long) value; - case ReportGroup -> Config.reportGroup = (Long) value; - case JoinServerMessage -> Config.joinServerMessage = (String) value; - case LeaveServerMessage -> Config.leaveServerMessage = (String) value; - case SayServerMessage -> Config.sayServerMessage = (String) value; - case SayQQMessage -> Config.sayQQMessage = (String) value; - case ReportMessage -> Config.reportMessage = (String) value; - case DisTitle -> Config.disTitle = (String) value; - case WebhookUrl -> Config.webhookUrl = (String) value; - case ServerName -> Config.servername = (String) value; - case RconEnabled -> Config.RconEnabled = (Boolean) value; - case ExecuteCommandPrefix -> Config.ExecuteCommandPrefix = (String) value; - case RconEnabledGroups -> Config.RconEnabledGroups = (String) value; - case RconIP -> Config.RconIP = (String) value; - case RconPort -> Config.RconPort = (Integer) value; - case RconPassword -> Config.RconPassword = (String) value; - case RconEnforceOperator -> Config.RconEnforceOperator = (Boolean) value; - case QQRobotEnabled -> Config.QQRobotEnabled = (Boolean) value; - case UnionBanEnabled -> Config.UnionBanEnabled = (Boolean) value; - case UnionBanCheckOnly -> Config.UnionBanCheckOnly = (Boolean) value; - case UnionBanCheckUrl -> Config.UnionBanCheckUrl = (String) value; - case UnionBanReportUrl -> Config.UnionBanReportUrl = (String) value; - case UnionBanReportKey -> Config.UnionBanReportKey = (String) value; - case QQCheckStartWord -> QQCheckStartWord = (String) value; - } - - } - public void save() { - if (!Main.INSTANCE.CONFIG_FILE.exists()) { + if (!Main.CONFIG_FILE.exists()) { try { - if (!Main.INSTANCE.CONFIG_FILE.createNewFile()) { + if (!Main.CONFIG_FILE.createNewFile()) { LOGGER.warning("Failed to create config file"); } } catch (IOException e) { @@ -145,9 +139,10 @@ public void save() { } } - try (FileWriter writer = new FileWriter(Main.INSTANCE.CONFIG_FILE)) { + try (FileWriter writer = new FileWriter(Main.CONFIG_FILE)) { Properties properties = getProperties(); properties.store(writer, null); + LOGGER.info("Saved config file: " + Main.CONFIG_FILE.getAbsolutePath()); } catch (IOException e) { LOGGER.warning("Failed to save config " + e.getMessage()); } diff --git a/src/main/java/fun/suya/suisuroru/config/ConfigRemap.java b/src/main/java/fun/suya/suisuroru/config/ConfigRemap.java deleted file mode 100644 index 52fe6cd..0000000 --- a/src/main/java/fun/suya/suisuroru/config/ConfigRemap.java +++ /dev/null @@ -1,47 +0,0 @@ -package fun.suya.suisuroru.config; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author Suisuroru - * Date: 2024/10/14 22:49 - * function: Provide a mapping between config keys and config values - */ -public class ConfigRemap { - public static final Map configMapping = new HashMap<>(); - - // configMapping.put(ConfigKeys, Config); - static { - configMapping.put("VanillaCommandsRewritten", "VanillaCommandsRewritten"); - configMapping.put("QQCheckEnabled", "qqCheckEnabled"); - configMapping.put("SyncChatEnabled", "syncChatEnabled"); - configMapping.put("SyncChatEnabledQ2SOnly", "SyncChatEnabledQ2SOnly"); - configMapping.put("BotWsUrl", "botWsUrl"); - configMapping.put("BotWsToken", "botWsToken"); - configMapping.put("SyncChatGroup", "syncChatGroup"); - configMapping.put("ReportGroup", "reportGroup"); - configMapping.put("JoinServerMessage", "joinServerMessage"); - configMapping.put("LeaveServerMessage", "leaveServerMessage"); - configMapping.put("SayServerMessage", "sayServerMessage"); - configMapping.put("SayQQMessage", "sayQQMessage"); - configMapping.put("ReportMessage", "reportMessage"); - configMapping.put("DisTitle", "disTitle"); - configMapping.put("WebhookUrl", "webhookUrl"); - configMapping.put("ServerName", "servername"); - configMapping.put("RconEnabled", "RconEnabled"); - configMapping.put("ExecuteCommandPrefix", "ExecuteCommandPrefix"); - configMapping.put("RconEnabledGroups", "RconEnabledGroups"); - configMapping.put("RconIP", "RconIP"); - configMapping.put("RconPort", "RconPort"); - configMapping.put("RconPassword", "RconPassword"); - configMapping.put("RconEnforceOperator", "RconEnforceOperator"); - configMapping.put("QQRobotEnabled", "QQRobotEnabled"); - configMapping.put("UnionBanEnabled", "UnionBanEnabled"); - configMapping.put("UnionBanCheckOnly", "UnionBanCheckOnly"); - configMapping.put("UnionBanCheckUrl", "UnionBanCheckUrl"); - configMapping.put("UnionBanReportUrl", "UnionBanReportUrl"); - configMapping.put("UnionBanReportKey", "UnionBanReportKey"); - configMapping.put("QQCheckStartWord", "QQCheckStartWord"); - } -} \ No newline at end of file diff --git a/src/main/java/fun/suya/suisuroru/data/UnionBan/LocalCache.java b/src/main/java/fun/suya/suisuroru/data/UnionBan/LocalCache.java index df19b2f..4095b80 100644 --- a/src/main/java/fun/suya/suisuroru/data/UnionBan/LocalCache.java +++ b/src/main/java/fun/suya/suisuroru/data/UnionBan/LocalCache.java @@ -34,7 +34,7 @@ public static void save(UnionBanMain.BanPair pair) { newData.put("time", pair.getTime().toString()); Object serverData; if (pair.getSourceServer().equals("Local")) { - serverData = Config.servername; + serverData = Config.ServerName; } else { serverData = pair.getSourceServer(); } diff --git a/src/main/java/fun/suya/suisuroru/data/UnionBan/UnionBanMain.java b/src/main/java/fun/suya/suisuroru/data/UnionBan/UnionBanMain.java index 48b6ded..825009c 100644 --- a/src/main/java/fun/suya/suisuroru/data/UnionBan/UnionBanMain.java +++ b/src/main/java/fun/suya/suisuroru/data/UnionBan/UnionBanMain.java @@ -46,7 +46,7 @@ public static ArrayList> loadLocalBanList() public static ArrayList> loadRemoteBanList() { ArrayList> banList = new ArrayList<>(); // 确保 URL 格式正确 - String webhookUrl = Webhook4Email.ensureValidUrl(Config.webhookUrl); + String webhookUrl = Webhook4Email.ensureValidUrl(Config.WebhookUrl); try { // 创建 HttpClient 实例 diff --git a/src/main/java/fun/suya/suisuroru/message/DefaultMessages.java b/src/main/java/fun/suya/suisuroru/message/DefaultMessages.java index 3525268..9fba08f 100644 --- a/src/main/java/fun/suya/suisuroru/message/DefaultMessages.java +++ b/src/main/java/fun/suya/suisuroru/message/DefaultMessages.java @@ -8,7 +8,7 @@ public class DefaultMessages { public static void TurnOffPlugin() { try { String subject = "服务器关闭通知"; - String content = Config.servername + "服务器已关闭"; + String content = Config.ServerName + "服务器已关闭"; Webhook4Email webhook4Email = new Webhook4Email(); webhook4Email.formatAndSendWebhook(subject, content); } catch (Exception e) { @@ -19,7 +19,7 @@ public static void TurnOffPlugin() { public static void TurnOnPlugin() { try { String subject = "服务器启动通知"; - String content = Config.servername + "服务器已启动"; + String content = Config.ServerName + "服务器已启动"; Webhook4Email webhook4Email = new Webhook4Email(); webhook4Email.formatAndSendWebhook(subject, content); } catch (Exception e) { diff --git a/src/main/java/fun/suya/suisuroru/message/ImageProcess.java b/src/main/java/fun/suya/suisuroru/message/ImageProcess.java index 7cee9cc..bca7ff9 100644 --- a/src/main/java/fun/suya/suisuroru/message/ImageProcess.java +++ b/src/main/java/fun/suya/suisuroru/message/ImageProcess.java @@ -28,7 +28,7 @@ public static void sendImageUrl(Image message, GroupMessageEvent event) { MessageChainBuilder builder = new MessageChainBuilder(); builder.append("[[CICode,url=").append(imageurl).append("]]"); // mohist端BUG导致,使用tellraw代替直接发送 - String command = "tellraw @a \"" + Config.sayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString()) + "\""; + String command = "tellraw @a \"" + Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString()) + "\""; executeRconCommand(command); } catch (Exception e) { Main.INSTANCE.getServer().broadcastMessage("一个错误发生于BasePlugin内部,图片无法被展示,请前往控制台查看"); diff --git a/src/main/java/fun/suya/suisuroru/message/Webhook4Email.java b/src/main/java/fun/suya/suisuroru/message/Webhook4Email.java index 153ccf1..730781e 100644 --- a/src/main/java/fun/suya/suisuroru/message/Webhook4Email.java +++ b/src/main/java/fun/suya/suisuroru/message/Webhook4Email.java @@ -32,7 +32,7 @@ public static String ensureValidUrl(String url) { public void sendWebhookData(Data data) { try { // 确保 URL 格式正确 - String webhookUrl = ensureValidUrl(Config.webhookUrl); + String webhookUrl = ensureValidUrl(Config.WebhookUrl); // 创建 HttpClient 实例 HttpClient httpClient = HttpClient.newHttpClient(); @@ -73,7 +73,7 @@ public void sendWebhookData(Data data) { * @param content 邮件内容 */ public void formatAndSendWebhook(String subject, String content) { - Data data = new Data("来自" + Config.servername + "的信息:\n" + content, subject); + Data data = new Data("来自" + Config.ServerName + "的信息:\n" + content, subject); sendWebhookData(data); } diff --git a/src/main/java/fun/suya/suisuroru/module/LoadBanlist.java b/src/main/java/fun/suya/suisuroru/module/LoadBanlist.java index 891931c..6642fff 100644 --- a/src/main/java/fun/suya/suisuroru/module/LoadBanlist.java +++ b/src/main/java/fun/suya/suisuroru/module/LoadBanlist.java @@ -42,7 +42,7 @@ public void PlayerJoinMessage(PlayerJoinEvent event) { BanMessage(message); } } else if ("Ban".equals(data.getSourceServer())) { - data.changeSource(Config.servername); + data.changeSource(Config.ServerName); boolean result = Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "minecraft:ban " + data.getUUID() + " " + data.getReason() + "-Banned by " + data.getSourceServer()); if (result) { String message; diff --git a/src/main/java/fun/suya/suisuroru/module/impl/RconPreCheck.java b/src/main/java/fun/suya/suisuroru/module/impl/RconPreCheck.java index 57b3ada..72aeecf 100644 --- a/src/main/java/fun/suya/suisuroru/module/impl/RconPreCheck.java +++ b/src/main/java/fun/suya/suisuroru/module/impl/RconPreCheck.java @@ -88,7 +88,7 @@ private void handleConsoleResult(String[] result, GroupMessageEvent event) { try { if (result != null && !result[0].isEmpty()) { MessageChainBuilder message = new MessageChainBuilder(); - message.append(new PlainText(Config.servername + "Console command result: \n")) + message.append(new PlainText(Config.ServerName + "Console command result: \n")) .append(result[0]); String PREFIX = "[BasePlugin Report]\n已查询到以下数据,下面的数据将按照以下顺序排列\n"; if (!result[1].isEmpty() && result[1].startsWith(PREFIX)) { @@ -101,12 +101,12 @@ private void handleConsoleResult(String[] result, GroupMessageEvent event) { event.getGroup().sendMessage(message.build()); } else { event.getGroup().sendMessage(new MessageChainBuilder() - .append(new PlainText(Config.servername + "No result from console command.")) + .append(new PlainText(Config.ServerName + "No result from console command.")) .build()); } } catch (Exception e) { event.getGroup().sendMessage(new MessageChainBuilder() - .append(new PlainText(Config.servername + "\n[ERROR] " + e.getMessage())) + .append(new PlainText(Config.ServerName + "\n[ERROR] " + e.getMessage())) .build()); } } diff --git a/src/main/java/fun/xd/suka/Main.java b/src/main/java/fun/xd/suka/Main.java index 5daa673..72b8438 100644 --- a/src/main/java/fun/xd/suka/Main.java +++ b/src/main/java/fun/xd/suka/Main.java @@ -46,8 +46,8 @@ public void onLoad() { LOGGER = INSTANCE.getLogger(); } - dataManager = new DataManager(); configManager = new ConfigManager(); + dataManager = new DataManager(); moduleManager = new ModuleManager(); if (!BASE_DIR.exists()) { @@ -88,7 +88,7 @@ public void onEnable() { LoggerAdapters.useLog4j2(); // 使用 Log4j2 作为日志记录器 if (Config.QQRobotEnabled) { - BOT = BotBuilder.positive(Config.botWsUrl).token(Config.botWsToken).connect(); // 连接 LLOneBot + BOT = BotBuilder.positive(Config.BotWsUrl).token(Config.BotWsToken).connect(); // 连接 LLOneBot eventChannel = GlobalEventChannel.INSTANCE; if (BOT == null) { LOGGER.warning("Failed to get bot instance"); diff --git a/src/main/java/fun/xd/suka/module/impl/QQCheck.java b/src/main/java/fun/xd/suka/module/impl/QQCheck.java index 33b5bce..93059e0 100644 --- a/src/main/java/fun/xd/suka/module/impl/QQCheck.java +++ b/src/main/java/fun/xd/suka/module/impl/QQCheck.java @@ -28,7 +28,7 @@ public QQCheck() { } public static void GroupCheck(GroupMessageEvent event, MessageChainBuilder builder) { - if (Config.qqCheckEnabled) { + if (Config.QQCheckEnabled) { int code = -1; try { code = Integer.parseInt(builder.build().contentToString().replace(Config.QQCheckStartWord, "")); @@ -72,7 +72,7 @@ public void onEnable() { Main.INSTANCE.eventChannel.subscribeAlways(FriendMessageEvent.class, event -> { String message = event.getMessage().contentToString(); - if (Config.qqCheckEnabled) { + if (Config.QQCheckEnabled) { int code = -1; try { code = Integer.parseInt(message); @@ -90,7 +90,7 @@ public void onAsyncPlayerPreLogin(AsyncPlayerPreLoginEvent event) { return; } - if (Config.qqCheckEnabled) { + if (Config.QQCheckEnabled) { Data data = Main.INSTANCE.dataManager.getPlayerData(event.getUniqueId()); // 首次登录 if (data == null) { @@ -113,7 +113,7 @@ public void onAsyncPlayerPreLogin(AsyncPlayerPreLoginEvent event) { playerCodeMap.put(playerData, code); // 拒绝加入服务器 - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, Config.disTitle.replace("%CODE%", String.valueOf(code))); + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, Config.DisTitle.replace("%CODE%", String.valueOf(code))); return; } diff --git a/src/main/java/fun/xd/suka/module/impl/Reporter.java b/src/main/java/fun/xd/suka/module/impl/Reporter.java index 7b273d5..1b3a217 100644 --- a/src/main/java/fun/xd/suka/module/impl/Reporter.java +++ b/src/main/java/fun/xd/suka/module/impl/Reporter.java @@ -27,7 +27,7 @@ public void onLoad() { @Override public void onEnable() { - reportGroup = Main.INSTANCE.BOT.getGroup(Config.reportGroup); + reportGroup = Main.INSTANCE.BOT.getGroup(Config.ReportGroup); if (reportGroup == null) { LOGGER.warning("Failed to get report group"); @@ -45,9 +45,9 @@ public void onAsyncPlayerPreLogin(AsyncPlayerPreLoginEvent event) { IpLocationResponse response = IpinfoUtil.getIpinfoCN(ip); if (response != null) { - builder.append(Config.reportMessage.replace("%NAME%", event.getName()).replace("%IP%", ip).replace("%IPINFO%", response.nation + " " + response.subdivision_1_name + " " + response.subdivision_2_name + " " + response.isp).replace("%RESULT%", event.getLoginResult().toString())); + builder.append(Config.ReportMessage.replace("%NAME%", event.getName()).replace("%IP%", ip).replace("%IPINFO%", response.nation + " " + response.subdivision_1_name + " " + response.subdivision_2_name + " " + response.isp).replace("%RESULT%", event.getLoginResult().toString())); } else { - builder.append(Config.reportMessage.replace("%NAME%", event.getName()).replace("%IP%", ip).replace("%IPINFO%", "").replace("%RESULT%", event.getLoginResult().toString())); + builder.append(Config.ReportMessage.replace("%NAME%", event.getName()).replace("%IP%", ip).replace("%IPINFO%", "").replace("%RESULT%", event.getLoginResult().toString())); } reportGroup.sendMessage(builder.build()); diff --git a/src/main/java/fun/xd/suka/module/impl/SyncChat.java b/src/main/java/fun/xd/suka/module/impl/SyncChat.java index d352fbf..cb21073 100644 --- a/src/main/java/fun/xd/suka/module/impl/SyncChat.java +++ b/src/main/java/fun/xd/suka/module/impl/SyncChat.java @@ -24,17 +24,17 @@ public SyncChat() { @Override public void onEnable() { - syncGroup = Main.INSTANCE.BOT.getGroup(Config.syncChatGroup); + syncGroup = Main.INSTANCE.BOT.getGroup(Config.SyncChatGroup); if (syncGroup == null) { LOGGER.warning("Failed to get sync group"); - Config.syncChatEnabled = false; + Config.SyncChatEnabled = false; Main.INSTANCE.configManager.save(); return; } Main.INSTANCE.eventChannel.subscribeAlways(GroupMessageEvent.class, event -> { - if (!Config.syncChatEnabled || event.getGroup() != syncGroup) { + if (!Config.SyncChatEnabled || event.getGroup() != syncGroup) { return; } @@ -48,7 +48,7 @@ public void onEnable() { } if (!builder.isEmpty()) { - Main.INSTANCE.getServer().broadcastMessage(Config.sayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString())); + Main.INSTANCE.getServer().broadcastMessage(Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString())); if (builder.build().contentToString().startsWith(Config.QQCheckStartWord)) { QQCheck.GroupCheck(event, builder); } @@ -58,22 +58,22 @@ public void onEnable() { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - if (Config.syncChatEnabled || !Config.SyncChatEnabledQ2SOnly) { - syncGroup.sendMessage(Config.joinServerMessage.replace("%NAME%", event.getPlayer().getName())); + if (Config.SyncChatEnabled || !Config.SyncChatEnabledQ2SOnly) { + syncGroup.sendMessage(Config.JoinServerMessage.replace("%NAME%", event.getPlayer().getName())); } } @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { - if (Config.syncChatEnabled || !Config.SyncChatEnabledQ2SOnly) { - syncGroup.sendMessage(Config.leaveServerMessage.replace("%NAME%", event.getPlayer().getName())); + if (Config.SyncChatEnabled || !Config.SyncChatEnabledQ2SOnly) { + syncGroup.sendMessage(Config.LeaveServerMessage.replace("%NAME%", event.getPlayer().getName())); } } @EventHandler public void onPlayerChat(AsyncPlayerChatEvent event) { - if (Config.syncChatEnabled || !Config.SyncChatEnabledQ2SOnly) { - syncGroup.sendMessage(Config.sayServerMessage.replace("%NAME%", event.getPlayer().getName()).replace("%MESSAGE%", event.getMessage())); + if (Config.SyncChatEnabled || !Config.SyncChatEnabledQ2SOnly) { + syncGroup.sendMessage(Config.SayServerMessage.replace("%NAME%", event.getPlayer().getName()).replace("%MESSAGE%", event.getMessage())); } } }