package io.github.lucaseasedup.logit.command; import static io.github.lucaseasedup.logit.message.MessageHelper.sendMsg; import static io.github.lucaseasedup.logit.message.MessageHelper.t; import io.github.lucaseasedup.logit.LogItCoreObject; import io.github.lucaseasedup.logit.account.Account; import java.util.Arrays; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public final class LogoutCommand extends LogItCoreObject implements CommandExecutor { @Override public boolean onCommand( CommandSender sender, Command cmd, String label, String[] args ) { Player player = null; if (sender instanceof Player) { player = (Player) sender; } if (args.length > 0 && args[0].equals("-x") && args.length <= 2) { if (player != null && !player.hasPermission("logit.logout.others")) { sendMsg(sender, t("noPerms")); return true; } if (args.length < 2) { sendMsg(sender, t("paramMissing") .replace("{0}", "player")); return true; } Player paramPlayer = Bukkit.getPlayerExact(args[1]); if (paramPlayer == null) { sendMsg(sender, t("playerNotOnline") .replace("{0}", args[1])); return true; } if (!getSessionManager().isSessionAlive(paramPlayer)) { sendMsg(sender, t("notLoggedIn.others") .replace("{0}", paramPlayer.getName())); return true; } if (!getSessionManager().endSession(paramPlayer).isCancelled()) { sendMsg(paramPlayer, t("endSession.success.self")); sendMsg(sender, t("endSession.success.others") .replace("{0}", paramPlayer.getName())); } } else if (args.length == 0) { if (player == null) { sendMsg(sender, t("onlyForPlayers")); return true; } if (!player.hasPermission("logit.logout.self")) { sendMsg(player, t("noPerms")); return true; } if (!getSessionManager().isSessionAlive(player)) { sendMsg(player, t("notLoggedIn.self")); return true; } Account account = getAccountManager().selectAccount( player.getName(), Arrays.asList( keys().username() ) ); if (!getSessionManager().endSession(player).isCancelled()) { sendMsg(sender, t("endSession.success.self")); if (account != null && getConfig("config.yml").getBoolean("loginSessions.enabled")) { account.eraseLoginSession(); } } } else { sendMsg(sender, t("incorrectParamCombination")); } return true; } }