diff --git a/pom.xml b/pom.xml index 30d9b666..b25cadc8 100644 --- a/pom.xml +++ b/pom.xml @@ -2,41 +2,41 @@ 4.0.0 - + fr.xephi.authme.AuthMe AuthMe 5.0-SNAPSHOT - + AuthMeReloaded Authentication plugin for CraftBukkit/Spigot! http://dev.bukkit.org/bukkit-plugins/authme-reloaded/ - + jar - + UTF-8 - + 1.7 1.7 - + 1.8.7-R0.1-SNAPSHOT - + ${project.groupId}.${project.artifactId} - + jenkins http://ci.xephi.fr - + GitHub https://github.com/Xephi/AuthMeReloaded/issues - + @@ -48,10 +48,10 @@ ${maven.compiler.target} - + maven-jar-plugin 2.6 @@ -81,107 +81,96 @@ - + - + spigot-repo https://hub.spigotmc.org/nexus/content/groups/public/ - - + + vault-repo http://nexus.theyeticave.net/content/repositories/pub_releases - + - everything + citizens-repo http://repo.citizensnpcs.co - - + + ess-repo http://repo.ess3.net/content/groups/public - + minelink-thirdparty http://repo.minelink.net/content/repositories/public - - + + + - bukkit-plugins-releases - repo.luricos.de releases + luricos-releases http://repo.luricos.de/content/repositories/releases/ - + - - sonatype-nexus-releases - https://oss.sonatype.org/content/repositories/releases - sonatype-nexus-snapshots https://oss.sonatype.org/content/repositories/snapshots - - - + comphenix-snapshots - Comphenix Maven Snapshots http://repo.comphenix.net/content/repositories/snapshots/ - + onarandombox http://repo.onarandombox.com/content/groups/public - + - + - + - + mysql mysql-connector-java 5.1.35 - + org.xerial sqlite-jdbc 3.8.10.1 - + com.h2database h2 1.4.187 - + com.sun.mail @@ -193,14 +182,14 @@ mail 1.5.0-b01 - + com.maxmind.geoip geoip-api 1.2.14 - + @@ -208,7 +197,8 @@ spigot-api ${bukkitVersion} - + + com.comphenix.attribute AttributeStorage @@ -224,12 +214,12 @@ - + net.milkbowl.vault - Vault - 1.5.4 + VaultAPI + 1.5 org.bukkit @@ -241,7 +231,7 @@ - + net.citizensnpcs @@ -258,7 +248,7 @@ - + com.onarandombox.multiversecore @@ -277,7 +267,7 @@ - + net.ess3 @@ -294,7 +284,7 @@ - + net.minelink @@ -311,12 +301,12 @@ - + com.trc202 - combattag - 6.4.1-SNAPSHOT + CombatTag + 6.2.1-SNAPSHOT org.bukkit @@ -328,7 +318,7 @@ - + de.luricos.bukkit @@ -345,7 +335,7 @@ - + org.spoutcraft @@ -362,7 +352,7 @@ - + @@ -383,7 +373,7 @@ - + net.citizensnpcs @@ -392,7 +382,7 @@ system ${project.basedir}/libs/Citizens.jar - + com.cypherx @@ -401,7 +391,7 @@ system ${project.basedir}/libs/xAuth.jar - + me.muizers @@ -410,6 +400,6 @@ system ${project.basedir}/libs/Notifications.jar - + diff --git a/src/main/java/fr/xephi/authme/SendMailSSL.java b/src/main/java/fr/xephi/authme/SendMailSSL.java index c1d433ad..29e56cba 100644 --- a/src/main/java/fr/xephi/authme/SendMailSSL.java +++ b/src/main/java/fr/xephi/authme/SendMailSSL.java @@ -4,12 +4,16 @@ import java.io.UnsupportedEncodingException; import java.util.Date; import java.util.Properties; +import javax.mail.BodyPart; import javax.mail.Message; -import javax.mail.PasswordAuthentication; +import javax.mail.MessagingException; +import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; import org.bukkit.Bukkit; @@ -37,20 +41,16 @@ public class SendMailSSL { sendername = Settings.getmailSenderName; } + String port = String.valueOf(Settings.getMailPort); Properties props = new Properties(); props.put("mail.smtp.host", Settings.getmailSMTP); - props.put("mail.smtp.socketFactory.port", String.valueOf(Settings.getMailPort)); - props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.port", String.valueOf(Settings.getMailPort)); + props.put("mail.smtp.port", port); + props.put("mail.smtp.starttls.enable", true); try { - Session session = Session.getInstance(props, new javax.mail.Authenticator() { + Session session = Session.getInstance(props, null); - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(Settings.getmailAccount, Settings.getmailPassword); - } - }); final Message message = new MimeMessage(session); try { message.setFrom(new InternetAddress(Settings.getmailAccount, sendername)); @@ -60,26 +60,34 @@ public class SendMailSSL { message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(auth.getEmail())); message.setSubject(Settings.getMailSubject); message.setSentDate(new Date()); + BodyPart messageBodyPart = new MimeBodyPart(); String text = Settings.getMailText; - text = text.replace("", auth.getNickname()); - text = text.replace("", plugin.getServer().getServerName()); - text = text.replace("", newPass); - message.setContent(text, "text/html"); + messageBodyPart.setText(text); + + Multipart multipart = new MimeMultipart(); + + multipart.addBodyPart(messageBodyPart); + + messageBodyPart = new MimeBodyPart(); + + multipart.addBodyPart(messageBodyPart); + message.setContent(multipart); + final Transport transport = session.getTransport("smtp"); + transport.connect(Settings.getmailSMTP, Settings.getmailAccount, Settings.getmailPassword); Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { @Override public void run() { try { - Transport.send(message); - } catch (Exception e) { - ConsoleLogger.showError("Some error appears while trying to send mail to " + auth.getEmail()); + transport.sendMessage(message, message.getAllRecipients()); + } catch (MessagingException e) { + System.out.println("Some error occured while trying to send a mail to " + auth.getEmail()); } } + }); - if (!Settings.noConsoleSpam) - ConsoleLogger.info("Email sent to : " + auth.getNickname()); } catch (Exception e) { - ConsoleLogger.showError("Some error appears while trying to send mail to " + auth.getEmail()); + System.out.println("Some error occured while trying to send a mail to " + auth.getEmail()); } } } diff --git a/src/main/java/fr/xephi/authme/cache/limbo/LimboPlayer.java b/src/main/java/fr/xephi/authme/cache/limbo/LimboPlayer.java index 4b726382..6ce6669e 100644 --- a/src/main/java/fr/xephi/authme/cache/limbo/LimboPlayer.java +++ b/src/main/java/fr/xephi/authme/cache/limbo/LimboPlayer.java @@ -1,5 +1,6 @@ package fr.xephi.authme.cache.limbo; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.inventory.ItemStack; @@ -83,6 +84,10 @@ public class LimboPlayer { } public void setTimeoutTaskId(BukkitTask i) { + if (this.timeoutTaskId != null) { + if (Bukkit.getScheduler().isCurrentlyRunning(this.timeoutTaskId.getTaskId()) || Bukkit.getScheduler().isQueued(this.timeoutTaskId.getTaskId())) + Bukkit.getScheduler().cancelTask(this.timeoutTaskId.getTaskId()); + } this.timeoutTaskId = i; } @@ -91,6 +96,10 @@ public class LimboPlayer { } public void setMessageTaskId(BukkitTask messageTaskId) { + if (this.messageTaskId != null) { + if (Bukkit.getScheduler().isCurrentlyRunning(this.messageTaskId.getTaskId()) || Bukkit.getScheduler().isQueued(this.messageTaskId.getTaskId())) + Bukkit.getScheduler().cancelTask(this.messageTaskId.getTaskId()); + } this.messageTaskId = messageTaskId; } diff --git a/src/main/java/fr/xephi/authme/commands/AdminCommand.java b/src/main/java/fr/xephi/authme/commands/AdminCommand.java index 9bb83436..052b405a 100644 --- a/src/main/java/fr/xephi/authme/commands/AdminCommand.java +++ b/src/main/java/fr/xephi/authme/commands/AdminCommand.java @@ -268,7 +268,8 @@ public class AdminCommand implements CommandExecutor { }); return true; } - } else if (args[0].equalsIgnoreCase("register") || args[0].equalsIgnoreCase("reg")) { + } else + if (args[0].equalsIgnoreCase("register") || args[0].equalsIgnoreCase("reg")) { if (args.length != 3) { sender.sendMessage("Usage: /authme register playername password"); return true; @@ -394,7 +395,8 @@ public class AdminCommand implements CommandExecutor { ConsoleLogger.showError(ex.getMessage()); } return true; - } else if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) { + } else + if (args[0].equalsIgnoreCase("changepassword") || args[0].equalsIgnoreCase("cp")) { if (args.length != 3) { sender.sendMessage("Usage: /authme changepassword playername newpassword"); return true; @@ -460,10 +462,10 @@ public class AdminCommand implements CommandExecutor { int interval = Settings.getWarnMessageInterval; BukkitScheduler sched = sender.getServer().getScheduler(); if (delay != 0) { - BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay); + BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name), delay); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id); } - LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTask(plugin, new MessageTask(plugin, name, m.send("reg_msg"), interval))); + LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("reg_msg"), interval))); if (Settings.applyBlindEffect) target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, Settings.getRegistrationTimeout * 20, 2)); m.send(target, "unregistered"); diff --git a/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java b/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java index af148640..6c370b1e 100644 --- a/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java +++ b/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java @@ -2,8 +2,6 @@ package fr.xephi.authme.commands; import java.security.NoSuchAlgorithmException; -import me.muizers.Notifications.Notification; - import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -29,6 +27,7 @@ import fr.xephi.authme.settings.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.MessageTask; import fr.xephi.authme.task.TimeoutTask; +import me.muizers.Notifications.Notification; public class UnregisterCommand implements CommandExecutor { @@ -93,10 +92,10 @@ public class UnregisterCommand implements CommandExecutor { int interval = Settings.getWarnMessageInterval; BukkitScheduler sched = sender.getServer().getScheduler(); if (delay != 0) { - BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay); + BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name), delay); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id); } - LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTask(plugin, new MessageTask(plugin, name, m.send("reg_msg"), interval))); + LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("reg_msg"), interval))); m.send(player, "unregistered"); ConsoleLogger.info(player.getDisplayName() + " unregistered himself"); if (plugin.notifications != null) { diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 0ca95f29..afa6c5aa 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -14,7 +14,6 @@ import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -86,7 +85,6 @@ public class AuthMePlayerListener implements Listener { return; String msg = event.getMessage(); - // WorldEdit GUI Shit if (msg.equalsIgnoreCase("/worldedit cui")) return; @@ -403,7 +401,7 @@ public class AuthMePlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerLogin(PlayerLoginEvent event) { - Player player = event.getPlayer(); + final Player player = event.getPlayer(); if (player == null) return; final String name = player.getName().toLowerCase(); @@ -447,18 +445,31 @@ public class AuthMePlayerListener implements Listener { if (Settings.isSessionsEnabled) if (PlayerCache.getInstance().isAuthenticated(name)) if (!Settings.sessionExpireOnIpChange) - LimboCache.getInstance().deleteLimboPlayer(name); + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + + @Override + public void run() { + LimboCache.getInstance().deleteLimboPlayer(name); + } + }); // Check if forceSingleSession is set to true, so kick player that has // joined with same nick of online player if (player.isOnline() && Settings.isForceSingleSessionEnabled) { - LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase()); event.setKickMessage(m.send("same_nick")[0]); event.setResult(PlayerLoginEvent.Result.KICK_OTHER); - if (PlayerCache.getInstance().isAuthenticated(player.getName().toLowerCase())) { - utils.addNormal(player, limbo.getGroup()); - LimboCache.getInstance().deleteLimboPlayer(player.getName().toLowerCase()); - } + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + + @Override + public void run() { + LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase()); + if (PlayerCache.getInstance().isAuthenticated(player.getName().toLowerCase())) { + Utils.getInstance().addNormal(player, limbo.getGroup()); + LimboCache.getInstance().deleteLimboPlayer(player.getName().toLowerCase()); + } + } + + }); return; } @@ -569,27 +580,6 @@ public class AuthMePlayerListener implements Listener { } } - private void placePlayerSafely(Player player, Location spawnLoc) { - if (!Settings.noTeleport) - return; - if (Settings.isTeleportToSpawnEnabled || (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName()))) - return; - Block b = player.getLocation().getBlock(); - if (b.getType() == Material.PORTAL || b.getType() == Material.ENDER_PORTAL || b.getType() == Material.LAVA || b.getType() == Material.STATIONARY_LAVA) { - m.send(player, "unsafe_spawn"); - if (spawnLoc.getWorld() != null) - player.teleport(spawnLoc); - return; - } - Block c = player.getLocation().add(0D, 1D, 0D).getBlock(); - if (c.getType() == Material.PORTAL || c.getType() == Material.ENDER_PORTAL || c.getType() == Material.LAVA || c.getType() == Material.STATIONARY_LAVA) { - m.send(player, "unsafe_spawn"); - if (spawnLoc.getWorld() != null) - player.teleport(spawnLoc); - return; - } - } - @EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(PlayerQuitEvent event) { if (event.getPlayer() == null) { @@ -616,7 +606,7 @@ public class AuthMePlayerListener implements Listener { Player player = event.getPlayer(); - if ((Settings.isForceSingleSessionEnabled) && (event.getReason().contains("You logged in from another location"))) { + if ((!Settings.isForceSingleSessionEnabled) && (event.getReason().contains(m.getString("same_nick")))) { event.setCancelled(true); return; } diff --git a/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java index 8da16fd9..2396704f 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java @@ -272,7 +272,7 @@ public class AsyncronousJoin { int time = Settings.getRegistrationTimeout * 20; int msgInterval = Settings.getWarnMessageInterval; if (time != 0) { - BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), time); + BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name), time); if (!LimboCache.getInstance().hasLimboPlayer(name)) LimboCache.getInstance().addLimboPlayer(player); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id); @@ -302,11 +302,12 @@ public class AsyncronousJoin { } }); - BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, msg, msgInterval)); + BukkitTask msgT = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, msgInterval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT); } - private void placePlayerSafely(final Player player, final Location spawnLoc) { + private void placePlayerSafely(final Player player, + final Location spawnLoc) { Location loc = null; if (spawnLoc == null) return; diff --git a/src/main/java/fr/xephi/authme/process/login/AsyncronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsyncronousLogin.java index 1a3d2ee2..20f50510 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsyncronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsyncronousLogin.java @@ -3,8 +3,6 @@ package fr.xephi.authme.process.login; import java.util.Date; import java.util.List; -import me.muizers.Notifications.Notification; - import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; @@ -21,6 +19,7 @@ import fr.xephi.authme.security.RandomString; import fr.xephi.authme.settings.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.MessageTask; +import me.muizers.Notifications.Notification; public class AsyncronousLogin { @@ -64,7 +63,8 @@ public class AsyncronousLogin { player.sendMessage(s.replace("THE_CAPTCHA", plugin.cap.get(name)).replace("", plugin.cap.get(name))); } return true; - } else if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) >= Settings.maxLoginTry) { + } else + if (plugin.captcha.containsKey(name) && plugin.captcha.get(name) >= Settings.maxLoginTry) { try { plugin.captcha.remove(name); plugin.cap.remove(name); @@ -87,14 +87,14 @@ public class AsyncronousLogin { if (!database.isAuthAvailable(name)) { m.send(player, "user_unknown"); if (LimboCache.getInstance().hasLimboPlayer(name)) { - LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId().cancel(); + LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId().cancel(); String[] msg; if (Settings.emailRegistration) { msg = m.send("reg_email_msg"); } else { msg = m.send("reg_msg"); } - BukkitTask msgT = Bukkit.getScheduler().runTask(plugin, new MessageTask(plugin, name, msg, Settings.getWarnMessageInterval)); + BukkitTask msgT = Bukkit.getScheduler().runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, Settings.getWarnMessageInterval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT); } return null; diff --git a/src/main/java/fr/xephi/authme/process/logout/ProcessSyncronousPlayerLogout.java b/src/main/java/fr/xephi/authme/process/logout/ProcessSyncronousPlayerLogout.java index 80122c40..c60fdced 100644 --- a/src/main/java/fr/xephi/authme/process/logout/ProcessSyncronousPlayerLogout.java +++ b/src/main/java/fr/xephi/authme/process/logout/ProcessSyncronousPlayerLogout.java @@ -1,7 +1,5 @@ package fr.xephi.authme.process.logout; -import me.muizers.Notifications.Notification; - import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; @@ -17,6 +15,7 @@ import fr.xephi.authme.settings.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.MessageTask; import fr.xephi.authme.task.TimeoutTask; +import me.muizers.Notifications.Notification; public class ProcessSyncronousPlayerLogout implements Runnable { @@ -37,10 +36,10 @@ public class ProcessSyncronousPlayerLogout implements Runnable { int interval = Settings.getWarnMessageInterval; BukkitScheduler sched = player.getServer().getScheduler(); if (delay != 0) { - BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay); + BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name), delay); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id); } - BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m.send("login_msg"), interval)); + BukkitTask msgT = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("login_msg"), interval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT); try { if (player.isInsideVehicle()) diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousEmailRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousEmailRegister.java index 318d04a9..c1b3cd86 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousEmailRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousEmailRegister.java @@ -1,7 +1,5 @@ package fr.xephi.authme.process.register; -import me.muizers.Notifications.Notification; - import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; @@ -14,6 +12,7 @@ import fr.xephi.authme.settings.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.MessageTask; import fr.xephi.authme.task.TimeoutTask; +import me.muizers.Notifications.Notification; public class ProcessSyncronousEmailRegister implements Runnable { @@ -37,13 +36,13 @@ public class ProcessSyncronousEmailRegister implements Runnable { int time = Settings.getRegistrationTimeout * 20; int msgInterval = Settings.getWarnMessageInterval; if (time != 0) { - LimboCache.getInstance().getLimboPlayer(name).getTimeoutTaskId().cancel(); - BukkitTask id = Bukkit.getScheduler().runTaskLater(plugin, new TimeoutTask(plugin, name), time); + LimboCache.getInstance().getLimboPlayer(name).getTimeoutTaskId().cancel(); + BukkitTask id = Bukkit.getScheduler().runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name), time); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id); } LimboCache.getInstance().getLimboPlayer(name).getMessageTaskId().cancel(); - BukkitTask nwMsg = Bukkit.getScheduler().runTask(plugin, new MessageTask(plugin, name, m.send("login_msg"), msgInterval)); + BukkitTask nwMsg = Bukkit.getScheduler().runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("login_msg"), msgInterval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(nwMsg); player.saveData(); if (!Settings.noConsoleSpam) diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousPasswordRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousPasswordRegister.java index 9372a673..cb3bf1ed 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousPasswordRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncronousPasswordRegister.java @@ -1,7 +1,5 @@ package fr.xephi.authme.process.register; -import me.muizers.Notifications.Notification; - import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; @@ -22,6 +20,7 @@ import fr.xephi.authme.settings.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.MessageTask; import fr.xephi.authme.task.TimeoutTask; +import me.muizers.Notifications.Notification; public class ProcessSyncronousPasswordRegister implements Runnable { @@ -67,10 +66,10 @@ public class ProcessSyncronousPasswordRegister implements Runnable { int interval = Settings.getWarnMessageInterval; BukkitScheduler sched = plugin.getServer().getScheduler(); if (delay != 0) { - BukkitTask id = sched.runTaskLater(plugin, new TimeoutTask(plugin, name), delay); + BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name), delay); LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id); } - BukkitTask msgT = sched.runTask(plugin, new MessageTask(plugin, name, m.send("login_msg"), interval)); + BukkitTask msgT = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("login_msg"), interval)); LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT); try { plugin.pllog.removePlayer(name); diff --git a/src/main/java/fr/xephi/authme/task/MessageTask.java b/src/main/java/fr/xephi/authme/task/MessageTask.java index 4a031f1d..94d20347 100644 --- a/src/main/java/fr/xephi/authme/task/MessageTask.java +++ b/src/main/java/fr/xephi/authme/task/MessageTask.java @@ -1,7 +1,6 @@ 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; @@ -33,11 +32,11 @@ public class MessageTask implements Runnable { for (String ms : msg) { player.sendMessage(ms); } - BukkitScheduler sched = plugin.getServer().getScheduler(); - BukkitTask late = sched.runTaskLater(plugin, this, interval * 20); + BukkitTask late = plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, this, interval * 20); if (LimboCache.getInstance().hasLimboPlayer(name)) { LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(late); } + return; } } } diff --git a/src/main/java/fr/xephi/authme/task/TimeoutTask.java b/src/main/java/fr/xephi/authme/task/TimeoutTask.java index c9a76d3f..1c1c1f69 100644 --- a/src/main/java/fr/xephi/authme/task/TimeoutTask.java +++ b/src/main/java/fr/xephi/authme/task/TimeoutTask.java @@ -1,5 +1,6 @@ package fr.xephi.authme.task; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Player; @@ -34,7 +35,7 @@ public class TimeoutTask implements Runnable { if (PlayerCache.getInstance().isAuthenticated(name)) return; - for (Player player : plugin.getServer().getOnlinePlayers()) { + for (final Player player : plugin.getServer().getOnlinePlayers()) { if (player.getName().toLowerCase().equals(name)) { if (LimboCache.getInstance().hasLimboPlayer(name)) { LimboPlayer inv = LimboCache.getInstance().getLimboPlayer(name); @@ -44,14 +45,27 @@ public class TimeoutTask implements Runnable { playerCache.removeCache(player); } } - GameMode gm = AuthMePlayerListener.gameMode.get(name); - if (gm != null) - { - player.setGameMode(gm); - ConsoleLogger.info("Set " + player.getName() + " to gamemode: " + gm.name()); + 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()); } - player.kickPlayer(m.send("timeout")[0]); - break; + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { + + @Override + public void run() { + if (player.isOnline()) + player.kickPlayer(m.send("timeout")[0]); + } + }); + return; } } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 623077ff..560ac19b 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ author: Xephi59 website: http://dev.bukkit.org/bukkit-plugins/authme-reloaded/ description: AuthMe prevents people, which aren't logged in, from doing stuff like placing blocks, moving, typing commands or seeing the inventory of the current player. main: fr.xephi.authme.AuthMe -version: 5.0-SNAPSHOT +version: maven-version softdepend: [Vault, ChestShop, Spout, Multiverse-Core, Notifications, Citizens, CombatTag, Essentials, EssentialsSpawn] commands: register: