CTZLoginServer/src/cn/citycraft/CTZLoginServer/listen/PlayerListen.java

70 lines
2.1 KiB
Java

/**
*
*/
package cn.citycraft.CTZLoginServer.listen;
import java.util.HashMap;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent.Result;
import org.bukkit.event.player.PlayerQuitEvent;
import cn.citycraft.CTZLoginServer.CTZLoginQueue;
import cn.citycraft.CTZLoginServer.config.Config;
import fr.xephi.authme.api.API;
/**
* @author 蒋天蓓 2015年7月28日下午9:05:20 TODO
*/
public class PlayerListen implements Listener {
protected HashMap<String, Long> lastquittime = new HashMap<String, Long>();
private long getNowTime() {
return System.currentTimeMillis() / 1000;
}
@EventHandler
public void PlayerLogin(PlayerLoginEvent e) {
String name = e.getPlayer().getName().toLowerCase();
long lasttime = lastquittime.get(name) == null ? 0 : lastquittime.get(name);
e.setKickMessage("§6[§bCTZLS§6] §c禁止入服 请使用服务器专用启动器进入游戏!");
if (getNowTime() - lasttime < Config.getInstance().getInt("server.timeout")) {
return;
}
if (CTZLoginQueue.canLogin(name, e.getAddress().getHostAddress())) {
return;
} else {
if (CTZLoginQueue.canLogin(name))
if (CTZLoginQueue.isCheckIP())
e.setKickMessage("§6[§bCTZLS§6] §c禁止入服 申请登录的IP与客户端IP不同!");
else
return;
}
if (!Config.getInstance().getBoolean("config.forceclient"))
return;
e.setResult(Result.KICK_WHITELIST);
}
@EventHandler(
priority = EventPriority.LOWEST)
public void PlayerJoin(PlayerJoinEvent e) {
String name = e.getPlayer().getName().toLowerCase();
if (lastquittime.containsKey(name)) {
API.forceLogin(e.getPlayer());
return;
}
if (CTZLoginQueue.Login(name)) {
API.forceLogin(e.getPlayer());
}
}
@EventHandler
public void PlayerQuit(PlayerQuitEvent e) {
lastquittime.put(e.getPlayer().getName().toLowerCase(), getNowTime());
}
}