244 lines
4.6 KiB
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);
|
|
}
|
|
}
|