/** * */ package cn.citycraft.CTZLoginServer; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.bukkit.configuration.ConfigurationSection; import com.google.gson.Gson; 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; } } class CTZServer { /** * 服务器分区信息 */ List areas = new ArrayList(); public List getAreas() { return areas; } public void setAreas(List aareas) { areas = aareas; } } /** * Json服务器信息序列化类 * * @author 蒋天蓓 2015年8月8日下午2:50:02 */ public class CTZServers { static CTZServer sl = new CTZServer(); /** * 获得json字符串 * * @return */ public static String getJson() { Gson gson = new Gson(); return chinaToUnicode(gson.toJson(sl)); } /** * 初始化服务器序列化类 * * @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); } } CTZServers stz = new CTZServers(); /** * 把中文转成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) {// 汉字范围 \u4e00-\u9fa5 (中文) result += "\\u" + Integer.toHexString(chr1); } else { result += str.charAt(i); } } return result; } /** * 判断是否为中文字符 * * @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; } } /** * 服务器数据序列化类 * * @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 getDepend() { return depend; } public void setDepend(String depend) { this.depend = depend; } public String getAddress() { return address; } 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 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); } }