package com.yaohun.mcbot.config; import com.google.common.io.ByteStreams; import com.yaohun.mcbot.McBot; import net.md_5.bungee.config.Configuration; import net.md_5.bungee.config.ConfigurationProvider; import net.md_5.bungee.config.YamlConfiguration; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.file.Files; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Random; public class Config { private static Configuration config; public static String SQL_Host; public static String SQL_Port; public static String SQL_Database; public static String SQL_Users; public static String SQL_Password; public static List BOT_GroupAccounts = new ArrayList<>(); public static String Group_Info = ""; private static HashMap messageMap = new HashMap<>(); public static void reloadConfig(McBot plugin) { if(!plugin.getDataFolder().exists()) { plugin.getDataFolder().mkdir(); } File file = new File(plugin.getDataFolder(), "config.yml"); if(!file.exists()) { try { file.createNewFile(); try (InputStream is = plugin.getResourceAsStream("config.yml"); OutputStream os = Files.newOutputStream(file.toPath())) { ByteStreams.copy(is, os); } } catch (IOException e) { throw new RuntimeException("Unable to create configuration file", e); } } try { ConfigurationProvider cfg = ConfigurationProvider.getProvider(YamlConfiguration.class); config = cfg.load(file); loadMySQLData(); loadConfigData(); loadMessageData(); } catch (IOException e) { e.printStackTrace(); } } public static void saveBOT_GroupAccounts() { List groupAccountList = new ArrayList<>(); for (Long l : BOT_GroupAccounts) { groupAccountList.add(l.toString()); } File file = new File(McBot.inst().getDataFolder(), "config.yml"); // 转换 List 为 List,避免 YAML 不兼容 Long 处理 config.set("Group-Numbers", groupAccountList); try { ConfigurationProvider.getProvider(YamlConfiguration.class).save(config, file); } catch (IOException e) { throw new RuntimeException(e); } } private static void loadMySQLData(){ SQL_Host = config.getString("MYSQL.Host"); SQL_Port = config.getString("MYSQL.Port"); SQL_Database = config.getString("MYSQL.Database"); SQL_Users = config.getString("MYSQL.Users"); SQL_Password = config.getString("MYSQL.Password"); } private static void loadConfigData(){ List stringList = config.getStringList("Group-Numbers"); System.out.println("[AuBot] 监听QQ群: "); for (String value : stringList) { BOT_GroupAccounts.add(Long.parseLong(value)); System.out.println("- "+value); } Group_Info = config.getString("Group_Info","").replace("&","§"); } private static void loadMessageData(){ if(config.getString("Message") == null) return; for (String key : config.getSection("Message").getKeys()){ String value = config.getString("Message." + key); messageMap.put(key, value.replace("&","§")); } System.out.println("[AuBot] 语言参数 "+messageMap.size()+"个"); } public static String getMessage(String key){ if(messageMap.containsKey(key)){ return messageMap.get(key); } return "缺少节点."+key; } public static String getRandomString() { String str = "CEFGHIJKLMNPQTXY34679"; Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 5; i++) { int number = random.nextInt(21); sb.append(str.charAt(number)); } return sb.toString(); } public static String extractBindCode(String message) { return message .replace("/绑定 ", "") .replace(" ", "") .toUpperCase() .replaceAll("[^A-Z0-9]", ""); } }