void performRegister(RegistrationMethod
variant, P parameters) {
- runTask(() -> asyncRegister.register(variant, parameters));
+ runTask(parameters.getPlayer(), () -> asyncRegister.register(variant, parameters));
}
public void performUnregister(Player player, String password) {
- runTask(() -> asynchronousUnregister.unregister(player, password));
+ runTask(player, () -> asynchronousUnregister.unregister(player, password));
}
public void performUnregisterByAdmin(CommandSender initiator, String name, Player player) {
- runTask(() -> asynchronousUnregister.adminUnregister(initiator, name, player));
+ runTask(name, () -> asynchronousUnregister.adminUnregister(initiator, name, player));
}
public void performJoin(Player player) {
- runTask(() -> asynchronousJoin.processJoin(player));
+ runTask(player, () -> asynchronousJoin.processJoin(player));
}
public void performQuit(Player player) {
- runTask(() -> asynchronousQuit.processQuit(player));
+ runTask(player, () -> asynchronousQuit.processQuit(player));
}
public void performAddEmail(Player player, String newEmail) {
- runTask(() -> asyncAddEmail.addEmail(player, newEmail));
+ runTask(player, () -> asyncAddEmail.addEmail(player, newEmail));
}
public void performChangeEmail(Player player, String oldEmail, String newEmail) {
- runTask(() -> asyncChangeEmail.changeEmail(player, oldEmail, newEmail));
+ runTask(player, () -> asyncChangeEmail.changeEmail(player, oldEmail, newEmail));
}
public void performPasswordChange(Player player, String oldPassword, String newPassword) {
- runTask(() -> asyncChangePassword.changePassword(player, oldPassword, newPassword));
+ runTask(player, () -> asyncChangePassword.changePassword(player, oldPassword, newPassword));
}
- public void performPasswordChangeAsAdmin(CommandSender sender, String playerName, String newPassword) {
- runTask(() -> asyncChangePassword.changePasswordAsAdmin(sender, playerName, newPassword));
+ public void performPasswordChangeAsAdmin(CommandSender sender, String name, String newPassword) {
+ runTask(name, () -> asyncChangePassword.changePasswordAsAdmin(sender, name, newPassword));
}
- private void runTask(Runnable runnable) {
- bukkitService.runTaskOptionallyAsync(runnable);
+ private void runTask(Player player, Runnable runnable) {
+ runTask(player.getName(), runnable);
+ }
+
+ private void runTask(String playerName, Runnable runnable) {
+ asyncUserScheduler.runTask(playerName.toLowerCase(), runnable);
}
}
diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java
index 3db023118a..95541220c8 100644
--- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java
+++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java
@@ -7,6 +7,7 @@
import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.message.MessageKey;
import fr.xephi.authme.permission.PlayerStatePermission;
+import fr.xephi.authme.process.AsyncUserScheduler;
import fr.xephi.authme.process.AsynchronousProcess;
import fr.xephi.authme.process.login.AsynchronousLogin;
import fr.xephi.authme.service.BukkitService;
@@ -57,6 +58,9 @@ public class AsynchronousJoin implements AsynchronousProcess {
@Inject
private BukkitService bukkitService;
+ @Inject
+ private AsyncUserScheduler asyncUserScheduler;
+
@Inject
private AsynchronousLogin asynchronousLogin;
@@ -126,7 +130,7 @@ public void processJoin(final Player player) {
// Run commands
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(
() -> commandManager.runCommandsOnSessionLogin(player));
- bukkitService.runTaskOptionallyAsync(() -> asynchronousLogin.forceLogin(player));
+ asyncUserScheduler.runTask(name, () -> asynchronousLogin.forceLogin(player));
return;
}
} else if (!service.getProperty(RegistrationSettings.FORCE)) {
diff --git a/src/main/java/fr/xephi/authme/service/BukkitService.java b/src/main/java/fr/xephi/authme/service/BukkitService.java
index c5425b3750..c47d4c9059 100644
--- a/src/main/java/fr/xephi/authme/service/BukkitService.java
+++ b/src/main/java/fr/xephi/authme/service/BukkitService.java
@@ -349,4 +349,13 @@ public Optional