Try to synchronise these task to avoid some problems

This commit is contained in:
Xephi 2015-04-23 16:10:09 +02:00
parent 6d90be5e58
commit a8795abc23
11 changed files with 44 additions and 34 deletions

View File

@ -527,7 +527,7 @@ public class AuthMe extends JavaPlugin {
player.teleport(limbo.getLoc());
this.utils.addNormal(player, limbo.getGroup());
player.setOp(limbo.getOperator());
this.plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
limbo.getTimeoutTaskId().cancel();
LimboCache.getInstance().deleteLimboPlayer(name);
if (this.playerBackup.doesCacheExist(player)) {
this.playerBackup.removeCache(player);

View File

@ -3,6 +3,7 @@ package fr.xephi.authme.cache.limbo;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask;
public class LimboPlayer {
@ -10,8 +11,8 @@ public class LimboPlayer {
private ItemStack[] inventory;
private ItemStack[] armour;
private Location loc = null;
private int timeoutTaskId = -1;
private int messageTaskId = -1;
private BukkitTask timeoutTaskId = null;
private BukkitTask messageTaskId = null;
private GameMode gameMode = GameMode.SURVIVAL;
private boolean operator = false;
private String group = "";
@ -81,19 +82,19 @@ public class LimboPlayer {
return group;
}
public void setTimeoutTaskId(int i) {
public void setTimeoutTaskId(BukkitTask i) {
this.timeoutTaskId = i;
}
public int getTimeoutTaskId() {
public BukkitTask getTimeoutTaskId() {
return timeoutTaskId;
}
public void setMessageTaskId(int messageTaskId) {
public void setMessageTaskId(BukkitTask messageTaskId) {
this.messageTaskId = messageTaskId;
}
public int getMessageTaskId() {
public BukkitTask getMessageTaskId() {
return messageTaskId;
}

View File

@ -24,6 +24,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
@ -459,10 +460,10 @@ public class AdminCommand implements CommandExecutor {
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = sender.getServer().getScheduler();
if (delay != 0) {
int id = sched.scheduleSyncDelayedTask(plugin, new TimeoutTask(plugin, name), delay);
BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, m._("reg_msg"), interval)));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTask(plugin, new MessageTask(plugin, name, m._("reg_msg"), interval)));
if (Settings.applyBlindEffect)
target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, Settings.getRegistrationTimeout * 20, 2));
m._(target, "unregistered");

View File

@ -11,6 +11,7 @@ import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
@ -102,10 +103,10 @@ public class LogoutCommand implements CommandExecutor {
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = sender.getServer().getScheduler();
if (delay != 0) {
int id = sched.scheduleSyncDelayedTask(plugin, new TimeoutTask(plugin, name), delay);
BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
int msgT = sched.scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval));
BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT);
try {
if (player.isInsideVehicle())

View File

@ -13,6 +13,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
@ -92,10 +93,10 @@ public class UnregisterCommand implements CommandExecutor {
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = sender.getServer().getScheduler();
if (delay != 0) {
int id = sched.scheduleSyncDelayedTask(plugin, new TimeoutTask(plugin, name), delay);
BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, m._("reg_msg"), interval)));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTask(plugin, new MessageTask(plugin, name, m._("reg_msg"), interval)));
m._(player, "unregistered");
ConsoleLogger.info(player.getDisplayName() + " unregistered himself");
if (plugin.notifications != null) {

View File

@ -36,6 +36,7 @@ import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
@ -730,7 +731,7 @@ public class AuthMePlayerListener implements Listener {
int time = Settings.getRegistrationTimeout * 20;
int msgInterval = Settings.getWarnMessageInterval;
if (time != 0) {
int id = sched.scheduleSyncDelayedTask(plugin, new TimeoutTask(plugin, name), time);
BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), time);
if (!LimboCache.getInstance().hasLimboPlayer(name))
LimboCache.getInstance().addLimboPlayer(player);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
@ -748,7 +749,7 @@ public class AuthMePlayerListener implements Listener {
player.setAllowFlight(true);
player.setFlying(true);
}
int msgT = sched.scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, msg, msgInterval));
BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, msg, msgInterval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT);
player.setNoDamageTicks(Settings.getRegistrationTimeout * 20);
if (Settings.useEssentialsMotd)
@ -830,8 +831,8 @@ public class AuthMePlayerListener implements Listener {
player.setAllowFlight(limbo.isFlying());
player.setFlying(limbo.isFlying());
}
this.plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
this.plugin.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
limbo.getTimeoutTaskId().cancel();
limbo.getMessageTaskId().cancel();
LimboCache.getInstance().deleteLimboPlayer(name);
if (playerBackup.doesCacheExist(player)) {
playerBackup.removeCache(player);
@ -917,8 +918,8 @@ public class AuthMePlayerListener implements Listener {
player.setAllowFlight(limbo.isFlying());
player.setFlying(limbo.isFlying());
}
this.plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
this.plugin.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
limbo.getTimeoutTaskId().cancel();
limbo.getMessageTaskId().cancel();
LimboCache.getInstance().deleteLimboPlayer(name);
if (this.playerBackup.doesCacheExist(player)) {
this.playerBackup.removeCache(player);

View File

@ -7,6 +7,7 @@ import me.muizers.Notifications.Notification;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
@ -86,14 +87,14 @@ public class AsyncronousLogin {
if (!database.isAuthAvailable(name)) {
m._(player, "user_unknown");
if (LimboCache.getInstance().hasLimboPlayer(name)) {
Bukkit.getScheduler().cancelTask(LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId());
LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId().cancel();
String[] msg;
if (Settings.emailRegistration) {
msg = m._("reg_email_msg");
} else {
msg = m._("reg_msg");
}
int msgT = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, msg, Settings.getWarnMessageInterval));
BukkitTask msgT = Bukkit.getScheduler().runTask(plugin, new MessageTask(plugin, name, msg, Settings.getWarnMessageInterval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT);
}
return null;
@ -168,8 +169,8 @@ public class AsyncronousLogin {
// processed in other order.
ProcessSyncronousPlayerLogin syncronousPlayerLogin = new ProcessSyncronousPlayerLogin(player, plugin, database);
if (syncronousPlayerLogin.getLimbo() != null) {
player.getServer().getScheduler().cancelTask(syncronousPlayerLogin.getLimbo().getTimeoutTaskId());
player.getServer().getScheduler().cancelTask(syncronousPlayerLogin.getLimbo().getMessageTaskId());
syncronousPlayerLogin.getLimbo().getTimeoutTaskId().cancel();
syncronousPlayerLogin.getLimbo().getMessageTaskId().cancel();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, syncronousPlayerLogin);
} else if (player.isOnline()) {

View File

@ -4,6 +4,8 @@ import me.muizers.Notifications.Notification;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.Utils;
@ -35,13 +37,13 @@ public class ProcessSyncronousEmailRegister implements Runnable {
int time = Settings.getRegistrationTimeout * 20;
int msgInterval = Settings.getWarnMessageInterval;
if (time != 0) {
Bukkit.getScheduler().cancelTask(LimboCache.getInstance().getLimboPlayer(name).getTimeoutTaskId());
int id = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new TimeoutTask(plugin, name), time);
LimboCache.getInstance().getLimboPlayer(name).getTimeoutTaskId().cancel();
BukkitTask id = Bukkit.getScheduler().runTaskLater(plugin, new TimeoutTask(plugin, name), time);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
Bukkit.getScheduler().cancelTask(LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId());
int nwMsg = Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, m._("login_msg"), msgInterval));
LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId().cancel();
BukkitTask nwMsg = Bukkit.getScheduler().runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), msgInterval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(nwMsg);
player.saveData();
if (!Settings.noConsoleSpam)

View File

@ -8,6 +8,7 @@ import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
@ -66,10 +67,10 @@ public class ProcessSyncronousPasswordRegister implements Runnable {
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = plugin.getServer().getScheduler();
if (delay != 0) {
int id = sched.scheduleSyncDelayedTask(plugin, new TimeoutTask(plugin, name), delay);
BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
int msgT = sched.scheduleSyncDelayedTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval));
BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m._("login_msg"), interval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT);
try {
plugin.pllog.removePlayer(name);
@ -95,8 +96,8 @@ public class ProcessSyncronousPasswordRegister implements Runnable {
player.teleport(tpEvent.getTo());
}
}
plugin.getServer().getScheduler().cancelTask(limbo.getTimeoutTaskId());
plugin.getServer().getScheduler().cancelTask(limbo.getMessageTaskId());
limbo.getTimeoutTaskId().cancel();
limbo.getMessageTaskId().cancel();
LimboCache.getInstance().deleteLimboPlayer(name);
}

View File

@ -2,6 +2,7 @@ package fr.xephi.authme.task;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.cache.auth.PlayerCache;
@ -33,7 +34,7 @@ public class MessageTask implements Runnable {
player.sendMessage(ms);
}
BukkitScheduler sched = plugin.getServer().getScheduler();
int late = sched.scheduleSyncDelayedTask(plugin, this, interval * 20);
BukkitTask late = sched.runTaskLater(plugin, this, interval * 20);
if (LimboCache.getInstance().hasLimboPlayer(name)) {
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(late);
}

View File

@ -38,8 +38,8 @@ public class TimeoutTask implements Runnable {
if (player.getName().toLowerCase().equals(name)) {
if (LimboCache.getInstance().hasLimboPlayer(name)) {
LimboPlayer inv = LimboCache.getInstance().getLimboPlayer(name);
player.getServer().getScheduler().cancelTask(inv.getMessageTaskId());
player.getServer().getScheduler().cancelTask(inv.getTimeoutTaskId());
inv.getMessageTaskId().cancel();
inv.getTimeoutTaskId().cancel();
if (playerCache.doesCacheExist(player)) {
playerCache.removeCache(player);
}