261 lines
4.7 KiB
Java
261 lines
4.7 KiB
Java
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<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);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 初始化服务器序列化类
|
|
*
|
|
* @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<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;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 服务器数据序列化类
|
|
*
|
|
* @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<Area> areas = new ArrayList<Area>();
|
|
|
|
public List<Area> getAreas() {
|
|
return areas;
|
|
}
|
|
|
|
public void setAreas(List<Area> aareas) {
|
|
areas = aareas;
|
|
}
|
|
}
|