package cn.citycraft.CTZServerCommon; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.bukkit.configuration.ConfigurationSection; import com.google.gson.Gson; public class CTZServer { protected static Logger log = new Logger(); static ServerInfo sl = new ServerInfo(); static Gson gson = new Gson(); /** * 把中文转成Unicode码 * * @param str * - 待转换的字符串 * @return 转换后的字符串 */ public static String chinaToUnicode(String str) { String result = ""; for (int i = 0; i < str.length(); i++) { int chr1 = str.charAt(i); if (chr1 >= 19968 && chr1 <= 171941) result += "\\u" + Integer.toHexString(chr1); else result += str.charAt(i); } return result; } /** * 获得json字符串 * * @return */ public static String getJson() { return chinaToUnicode(gson.toJson(sl)); } // public static Logger getLogger() { // return log; // } /** * 初始化服务器序列化类 * * @param 配置类 */ public static void Init(ConfigurationSection cs) { Set arealist = cs.getKeys(false); for (String a : arealist) { Area area = new Area(); area.setName(cs.getString(a + ".name")); Set serverlist = cs.getConfigurationSection(a + ".servers").getKeys(false); for (String s : serverlist) { Server server = new Server(); server.name = cs.getString(a + ".servers." + s + ".name"); server.address = cs.getString(a + ".servers." + s + ".address"); server.port = cs.getInt(a + ".servers." + s + ".port"); server.version = cs.getString(a + ".servers." + s + ".version"); server.info = cs.getString(a + ".servers." + s + ".info"); server.url = cs.getString(a + ".servers." + s + ".url"); server.depend = cs.getString(a + ".servers." + s + ".depend"); area.servers.add(server); } sl.areas.add(area); } } /** * 初始化服务器序列化类 * * @param json * - json字符串 */ public static boolean Init(String json) { try { sl = gson.fromJson(json, ServerInfo.class); return true; } catch (Exception e) { return false; } } public static void print(String message) { log.info(message); } public static void warn(String message) { log.warning(message); } /** * 判断是否为中文字符 * * @param c * @return */ public boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) return true; return false; } } class Area { /** * 大区名称 */ String name; /** * 服务器信息 */ List servers = new ArrayList(); public String getName() { return name; } public List getServers() { return servers; } public void setName(String name) { this.name = name; } public void setServers(List servers) { this.servers = servers; } } /** * 服务器数据序列化类 * * @author 蒋天蓓 * 2015年8月14日下午4:36:12 * */ class Server { /** * 服务器名称 */ public String name; /** * 服务器地址 */ public String address; /** * 服务器端口 */ public int port; /** * 服务器描述 */ public String info; /** * 服务器版本 */ public String version; /** * 版本下载地址 */ public String url; /** * 依赖版本 */ public String depend; public String getAddress() { return address; } public String getDepend() { return depend; } public String getInfo() { return info; } public String getName() { return name; } public int getPort() { return port; } public String getUrl() { return url; } public String getVersion() { return version; } public void setAddress(String address) { this.address = address; } public void setDepend(String depend) { this.depend = depend; } public void setInfo(String info) { this.info = info; } public void setName(String name) { this.name = name; } public void setPort(int port) { this.port = port; } public void setUrl(String url) { this.url = url; } public void setVersion(String version) { this.version = version; } @Override public String toString() { return String.format("{0}:{1}", address, port); } } class ServerInfo { /** * 服务器分区信息 */ List areas = new ArrayList(); public List getAreas() { return areas; } public void setAreas(List aareas) { areas = aareas; } }