1
0
mirror of https://e.coding.net/circlecloud/CTZServerCommon.git synced 2024-12-26 18:28:46 +00:00

init project ...

Signed-off-by: 502647092 <jtb1@163.com>
This commit is contained in:
502647092 2015-09-16 13:55:43 +08:00
commit cc0f1e71d9
7 changed files with 554 additions and 0 deletions

26
.classpath Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

38
.gitignore vendored Normal file
View File

@ -0,0 +1,38 @@
# Eclipse stuff
/.settings
# netbeans
/nbproject
# we use maven!
/build.xml
# maven
/target
/repo
# vim
.*.sw[a-p]
# various other potential build files
/build
/bin
/dist
/manifest.mf
/world
# Mac filesystem dust
*.DS_Store
# intellij
*.iml
*.ipr
*.iws
.idea/
# Project Stuff
/src/main/resources/Soulbound
# Atlassian Stuff
/atlassian-ide-plugin.xml

23
.project Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>CTZServerCommon</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

64
pom.xml Normal file
View File

@ -0,0 +1,64 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.citycraft</groupId>
<artifactId>CTZServerCommon</artifactId>
<version>1.0</version>
<name>CTZServerCommon</name>
<build>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
<minimizeJar>true</minimizeJar>
<artifactSet>
<includes>
<include>cn.citycraft:PluginHelper</include>
</includes>
</artifactSet>
<relocation>
<pattern>cn.citycraft.PluginHelper</pattern>
<shadedPattern>${project.groupId}.${project.artifactId}</shadedPattern>
</relocation>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>citycraft-repo</id>
<url>http://ci.citycraft.cn:8800/jenkins/plugin/repository/everything/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>cn.citycraft</groupId>
<artifactId>PluginHelper</artifactId>
<type>jar</type>
<version>1.0</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View File

@ -0,0 +1,102 @@
package cn.citycraft.CTZServerCommon;
import cn.citycraft.PluginHelper.sql.KeyValue;
import cn.citycraft.PluginHelper.sql.MySQLHelper;
import cn.citycraft.PluginHelper.sql.SQLHelper;
import cn.citycraft.PluginHelper.utils.StringUtil;
import net.md_5.bungee.api.ChatColor;
public class CTZAuth {
static final String TableName = "ctzserver";
static final String UserField = "player";
static final String PWDField = "password";
static final String ISLoginField = "islogin";
static final String ALLOWLoginField = "allowlogin";
static final String LASTLOGOUT = "lastlogout";
static final String IP = "ip";
static SQLHelper sql;
public static boolean allowLogin(String username) {
return allowLogin(username, null);
}
public static boolean allowLogin(String username, String ip) {
KeyValue cdt = new KeyValue(UserField, username);
if (ip != null)
cdt.add(IP, ip);
String result = sql.dbSelectFirst(TableName, ALLOWLoginField, cdt);
return (result != null && result.equalsIgnoreCase("1"));
}
public static void changePassword(String username, String password) {
// TODO 处理玩家密码修改事件
}
public static boolean checkLastLogout(String username, long timeout) {
try {
String lastlogout = sql.dbSelectFirst(TableName, LASTLOGOUT, new KeyValue(UserField, username));
return System.currentTimeMillis() - Integer.parseInt(lastlogout) < timeout * 1000;
} catch (Exception e) {
return false;
}
}
public static boolean checkPassword(String username, String password) {
return sql.isFieldExists(TableName, new KeyValue(UserField, username).add(PWDField, StringUtil.getMD5Code(password)));
}
public static void init(SQLHelper sql, String address, int port, String datebase, String username, String password) {
CTZAuth.sql = sql;
CTZServer.print(ChatColor.GREEN + "初始化数据库连接...");
sql = new MySQLHelper(address, port, datebase, username, password);
if (!sql.dbConnection()) {
CTZServer.warn(ChatColor.RED + "数据库连接失败...");
return;
}
CTZServer.print(ChatColor.GREEN + "数据库连接成功,检查数据表是否存在...");
if (!sql.isTableExists(TableName)) {
CTZServer.print(ChatColor.RED + "数据表不存在,新建表" + TableName + "...");
KeyValue kv = new KeyValue("player", "VARCHAR(16) NOT NULL")
.add("password", "VARCHAR(50) NOT NULL")
.add("ip", "VARCHAR(40) NOT NULL DEFAULT '127.0.0.1'")
.add("lastlogout", "BIGINT(30) NOT NULL DEFAULT 0")
.add("x", "DOUBLE NOT NULL DEFAULT 0")
.add("y", "DOUBLE NOT NULL DEFAULT 0")
.add("z", "DOUBLE NOT NULL DEFAULT 0")
.add("email", "VARCHAR(50) NOT NULL DEFAULT 'mc@mc.com'")
.add("world", "VARCHAR(20) DEFAULT 'world'")
.add("islogged", "SMALLINT(6) NOT NULL DEFAULT 0")
.add("allowlogin", "SMALLINT(6) NOT NULL DEFAULT 0");
String Conditions = "UNIQUE (`player`)";
if (!sql.createTables(TableName, kv, Conditions))
CTZServer.warn(ChatColor.RED + "数据表 " + TableName + " 创建失败,请尝试手动创建并重启服务器...");
else
CTZServer.print(ChatColor.GREEN + "数据表 " + TableName + " 创建成功...");
}
}
public static boolean isLogin(String username) {
String result = sql.dbSelectFirst(TableName, ISLoginField, new KeyValue(UserField, username));
return (result != null && result.equalsIgnoreCase("1"));
}
public static boolean isRegistered(String username) {
return sql.isFieldExists(TableName, new KeyValue(UserField, username));
}
public static boolean login(String username, String ip) {
return sql.dbUpdate(TableName, new KeyValue(ALLOWLoginField, "1").add(IP, ip == null ? "127.0.0.1" : ip), new KeyValue(UserField, username));
}
public static boolean registerPlayer(String username, String password) {
if (isRegistered(username))
return false;
else
return sql.dbInsert(TableName, new KeyValue(UserField, username).add(PWDField, StringUtil.getMD5Code(password)));
}
public static boolean setLastLogout(String username, long logouttime) {
return sql.dbUpdate(TableName, new KeyValue(ALLOWLoginField, "1"), new KeyValue(UserField, username));
}
}

View File

@ -0,0 +1,260 @@
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;
}
}

View File

@ -0,0 +1,41 @@
package cn.citycraft.CTZServerCommon;
import java.text.SimpleDateFormat;
import java.util.Date;
import net.md_5.bungee.api.ChatColor;
public class Logger {
enum LEVEL {
INFO("信息"),
WARN("警告"),
ERROR("错误");
String prefix;
LEVEL(String prefix) {
this.prefix = prefix;
}
@Override
public String toString() {
return prefix;
}
}
public void error(String string) {
log(LEVEL.ERROR, string);
}
public void info(String string) {
log(LEVEL.INFO, string);
}
public void log(LEVEL lvl, String string) {
String time = new SimpleDateFormat("HH:mm:ss").format(new Date(System.currentTimeMillis()));
System.out.println(String.format("[%1$s %2$s] %3$s", time, lvl, ChatColor.stripColor(string)));
}
public void warning(String string) {
log(LEVEL.WARN, string);
}
}