CTZLoginServer/src/cn/citycraft/CTZLoginServer/CTZServers.java

244 lines
4.6 KiB
Java

/**
*
*/
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<Server> servers = new ArrayList<Server>();
public String getName() {
return name;
}
public List<Server> getServers() {
return servers;
}
public void setName(String name) {
this.name = name;
}
public void setServers(List<Server> servers) {
this.servers = servers;
}
}
class CTZServer {
/**
* 服务器分区信息
*/
List<Area> areas = new ArrayList<Area>();
public List<Area> getAreas() {
return areas;
}
public void setAreas(List<Area> 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<String> arealist = cs.getKeys(false);
for (String a : arealist) {
Area area = new Area();
area.setName(cs.getString(a + ".name"));
Set<String> 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);
}
}