#1218 Add onLogout to commands.yml
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package fr.xephi.authme.process;
|
||||
|
||||
import fr.xephi.authme.process.login.ProcessSyncPlayerLogin;
|
||||
import fr.xephi.authme.process.logout.ProcessSynchronousPlayerLogout;
|
||||
import fr.xephi.authme.process.quit.ProcessSyncronousPlayerQuit;
|
||||
import fr.xephi.authme.process.logout.ProcessSyncPlayerLogout;
|
||||
import fr.xephi.authme.process.quit.ProcessSyncPlayerQuit;
|
||||
import fr.xephi.authme.process.register.ProcessSyncEmailRegister;
|
||||
import fr.xephi.authme.process.register.ProcessSyncPasswordRegister;
|
||||
import fr.xephi.authme.service.BukkitService;
|
||||
@@ -30,29 +30,29 @@ public class SyncProcessManager {
|
||||
@Inject
|
||||
private ProcessSyncPlayerLogin processSyncPlayerLogin;
|
||||
@Inject
|
||||
private ProcessSynchronousPlayerLogout processSynchronousPlayerLogout;
|
||||
private ProcessSyncPlayerLogout processSyncPlayerLogout;
|
||||
@Inject
|
||||
private ProcessSyncronousPlayerQuit processSyncronousPlayerQuit;
|
||||
private ProcessSyncPlayerQuit processSyncPlayerQuit;
|
||||
|
||||
|
||||
public void processSyncEmailRegister(final Player player) {
|
||||
public void processSyncEmailRegister(Player player) {
|
||||
runTask(() -> processSyncEmailRegister.processEmailRegister(player));
|
||||
}
|
||||
|
||||
public void processSyncPasswordRegister(final Player player) {
|
||||
public void processSyncPasswordRegister(Player player) {
|
||||
runTask(() -> processSyncPasswordRegister.processPasswordRegister(player));
|
||||
}
|
||||
|
||||
public void processSyncPlayerLogout(final Player player) {
|
||||
runTask(() -> processSynchronousPlayerLogout.processSyncLogout(player));
|
||||
public void processSyncPlayerLogout(Player player) {
|
||||
runTask(() -> processSyncPlayerLogout.processSyncLogout(player));
|
||||
}
|
||||
|
||||
public void processSyncPlayerLogin(final Player player) {
|
||||
public void processSyncPlayerLogin(Player player) {
|
||||
runTask(() -> processSyncPlayerLogin.processPlayerLogin(player));
|
||||
}
|
||||
|
||||
public void processSyncPlayerQuit(final Player player) {
|
||||
runTask(() -> processSyncronousPlayerQuit.processSyncQuit(player));
|
||||
public void processSyncPlayerQuit(Player player, boolean wasLoggedIn) {
|
||||
runTask(() -> processSyncPlayerQuit.processSyncQuit(player, wasLoggedIn));
|
||||
}
|
||||
|
||||
private void runTask(Runnable runnable) {
|
||||
|
||||
+12
-2
@@ -10,6 +10,7 @@ import fr.xephi.authme.process.SynchronousProcess;
|
||||
import fr.xephi.authme.service.BukkitService;
|
||||
import fr.xephi.authme.service.CommonService;
|
||||
import fr.xephi.authme.service.TeleportationService;
|
||||
import fr.xephi.authme.settings.commandconfig.CommandManager;
|
||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -21,7 +22,7 @@ import javax.inject.Inject;
|
||||
import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND;
|
||||
|
||||
|
||||
public class ProcessSynchronousPlayerLogout implements SynchronousProcess {
|
||||
public class ProcessSyncPlayerLogout implements SynchronousProcess {
|
||||
|
||||
@Inject
|
||||
private CommonService service;
|
||||
@@ -41,9 +42,17 @@ public class ProcessSynchronousPlayerLogout implements SynchronousProcess {
|
||||
@Inject
|
||||
private TeleportationService teleportationService;
|
||||
|
||||
ProcessSynchronousPlayerLogout() {
|
||||
@Inject
|
||||
private CommandManager commandManager;
|
||||
|
||||
ProcessSyncPlayerLogout() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes a player which has been logged out.
|
||||
*
|
||||
* @param player the player logging out
|
||||
*/
|
||||
public void processSyncLogout(Player player) {
|
||||
final String name = player.getName().toLowerCase();
|
||||
|
||||
@@ -53,6 +62,7 @@ public class ProcessSynchronousPlayerLogout implements SynchronousProcess {
|
||||
}
|
||||
|
||||
applyLogoutEffect(player);
|
||||
commandManager.runCommandsOnLogout(player);
|
||||
|
||||
// Player is now logout... Time to fire event !
|
||||
bukkitService.callEvent(new LogoutEvent(player));
|
||||
@@ -18,6 +18,9 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
* Async process called when a player quits the server.
|
||||
*/
|
||||
public class AsynchronousQuit implements AsynchronousProcess {
|
||||
|
||||
@Inject
|
||||
@@ -47,14 +50,19 @@ public class AsynchronousQuit implements AsynchronousProcess {
|
||||
AsynchronousQuit() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Processes that the given player has quit the server.
|
||||
*
|
||||
* @param player the player who left
|
||||
*/
|
||||
public void processQuit(Player player) {
|
||||
if (player == null || validationService.isUnrestricted(player.getName())) {
|
||||
return;
|
||||
}
|
||||
final String name = player.getName().toLowerCase();
|
||||
final boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
||||
|
||||
if (playerCache.isAuthenticated(name)) {
|
||||
if (wasLoggedIn) {
|
||||
if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
||||
Location loc = spawnLoader.getPlayerLocationOrSpawn(player);
|
||||
PlayerAuth auth = PlayerAuth.builder()
|
||||
@@ -82,7 +90,7 @@ public class AsynchronousQuit implements AsynchronousProcess {
|
||||
database.setUnlogged(name);
|
||||
|
||||
if (plugin.isEnabled()) {
|
||||
syncProcessManager.processSyncPlayerQuit(player);
|
||||
syncProcessManager.processSyncPlayerQuit(player, wasLoggedIn);
|
||||
}
|
||||
// remove player from cache
|
||||
if (database instanceof CacheDataSource) {
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package fr.xephi.authme.process.quit;
|
||||
|
||||
import fr.xephi.authme.data.limbo.LimboService;
|
||||
import fr.xephi.authme.process.SynchronousProcess;
|
||||
import fr.xephi.authme.settings.commandconfig.CommandManager;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
|
||||
public class ProcessSyncPlayerQuit implements SynchronousProcess {
|
||||
|
||||
@Inject
|
||||
private LimboService limboService;
|
||||
|
||||
@Inject
|
||||
private CommandManager commandManager;
|
||||
|
||||
/**
|
||||
* Processes a player having quit.
|
||||
*
|
||||
* @param player the player that left
|
||||
* @param wasLoggedIn true if the player was logged in when leaving, false otherwise
|
||||
*/
|
||||
public void processSyncQuit(Player player, boolean wasLoggedIn) {
|
||||
if (wasLoggedIn) {
|
||||
commandManager.runCommandsOnLogout(player);
|
||||
} else {
|
||||
limboService.restoreData(player);
|
||||
}
|
||||
player.leaveVehicle();
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package fr.xephi.authme.process.quit;
|
||||
|
||||
import fr.xephi.authme.data.limbo.LimboService;
|
||||
import fr.xephi.authme.process.SynchronousProcess;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
|
||||
public class ProcessSyncronousPlayerQuit implements SynchronousProcess {
|
||||
|
||||
@Inject
|
||||
private LimboService limboService;
|
||||
|
||||
public void processSyncQuit(Player player) {
|
||||
limboService.restoreData(player);
|
||||
player.leaveVehicle();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user