LoginSystem/src/main/java/fr/xephi/authme/task/TimeoutTask.java
2015-06-30 00:47:25 +02:00

73 lines
2.4 KiB
Java

package fr.xephi.authme.task;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerCache;
import fr.xephi.authme.cache.backup.FileCache;
import fr.xephi.authme.cache.limbo.LimboCache;
import fr.xephi.authme.cache.limbo.LimboPlayer;
import fr.xephi.authme.listener.AuthMePlayerListener;
import fr.xephi.authme.settings.Messages;
public class TimeoutTask implements Runnable {
private AuthMe plugin;
private String name;
private Messages m = Messages.getInstance();
private FileCache playerCache;
public TimeoutTask(AuthMe plugin, String name) {
this.plugin = plugin;
this.name = name;
this.playerCache = new FileCache(plugin);
}
public String getName() {
return name;
}
@Override
public void run() {
if (PlayerCache.getInstance().isAuthenticated(name))
return;
for (final Player player : plugin.getServer().getOnlinePlayers()) {
if (player.getName().toLowerCase().equals(name)) {
if (LimboCache.getInstance().hasLimboPlayer(name)) {
LimboPlayer inv = LimboCache.getInstance().getLimboPlayer(name);
inv.getMessageTaskId().cancel();
inv.getTimeoutTaskId().cancel();
if (playerCache.doesCacheExist(player)) {
playerCache.removeCache(player);
}
}
final GameMode gm = AuthMePlayerListener.gameMode.get(name);
if (gm != null) {
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
player.setGameMode(gm);
}
});
ConsoleLogger.info("Set " + player.getName() + " to gamemode: " + gm.name());
}
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
if (player.isOnline())
player.kickPlayer(m.send("timeout")[0]);
}
});
return;
}
}
}
}