86 lines
2.7 KiB
Java
86 lines
2.7 KiB
Java
package fr.xephi.authme.process.logout;
|
|
|
|
import fr.xephi.authme.ConsoleLogger;
|
|
import fr.xephi.authme.data.limbo.LimboService;
|
|
import fr.xephi.authme.events.LogoutEvent;
|
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
|
import fr.xephi.authme.listener.protocollib.ProtocolLibService;
|
|
import fr.xephi.authme.message.MessageKey;
|
|
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;
|
|
import org.bukkit.potion.PotionEffect;
|
|
import org.bukkit.potion.PotionEffectType;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND;
|
|
|
|
|
|
public class ProcessSyncPlayerLogout implements SynchronousProcess {
|
|
|
|
private final ConsoleLogger logger = ConsoleLoggerFactory.get(ProcessSyncPlayerLogout.class);
|
|
|
|
@Inject
|
|
private CommonService service;
|
|
|
|
@Inject
|
|
private BukkitService bukkitService;
|
|
|
|
@Inject
|
|
private ProtocolLibService protocolLibService;
|
|
|
|
@Inject
|
|
private LimboService limboService;
|
|
|
|
@Inject
|
|
private TeleportationService teleportationService;
|
|
|
|
@Inject
|
|
private CommandManager commandManager;
|
|
|
|
ProcessSyncPlayerLogout() {
|
|
}
|
|
|
|
/**
|
|
* Processes a player which has been logged out.
|
|
*
|
|
* @param player the player logging out
|
|
*/
|
|
public void processSyncLogout(Player player) {
|
|
if (service.getProperty(RestrictionSettings.PROTECT_INVENTORY_BEFORE_LOGIN)) {
|
|
protocolLibService.sendBlankInventoryPacket(player);
|
|
}
|
|
|
|
applyLogoutEffect(player);
|
|
commandManager.runCommandsOnLogout(player);
|
|
|
|
// Player is now logout... Time to fire event !
|
|
bukkitService.callEvent(new LogoutEvent(player));
|
|
|
|
service.send(player, MessageKey.LOGOUT_SUCCESS);
|
|
logger.info(player.getName() + " logged out");
|
|
}
|
|
|
|
private void applyLogoutEffect(Player player) {
|
|
// dismount player
|
|
player.leaveVehicle();
|
|
teleportationService.teleportOnJoin(player);
|
|
|
|
// Apply Blindness effect
|
|
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
|
|
int timeout = service.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND;
|
|
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, timeout, 2));
|
|
}
|
|
|
|
// Set player's data to unauthenticated
|
|
limboService.createLimboPlayer(player, true);
|
|
}
|
|
|
|
}
|