diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index e18baf0d..37b95967 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -350,7 +350,7 @@ public class AuthMe extends JavaPlugin { //getCommand("register").setExecutor(new RegisterCommand(this)); //getCommand("login").setExecutor(new LoginCommand(this)); //getCommand("changepassword").setExecutor(new ChangePasswordCommand(this)); - getCommand("logout").setExecutor(new LogoutCommand(this)); + //getCommand("logout").setExecutor(new LogoutCommand(this)); getCommand("unregister").setExecutor(new UnregisterCommand(this)); getCommand("email").setExecutor(new EmailCommand(this)); getCommand("captcha").setExecutor(new CaptchaCommand(this)); diff --git a/src/main/java/fr/xephi/authme/command/CommandManager.java b/src/main/java/fr/xephi/authme/command/CommandManager.java index a2d548a7..7f06492e 100644 --- a/src/main/java/fr/xephi/authme/command/CommandManager.java +++ b/src/main/java/fr/xephi/authme/command/CommandManager.java @@ -4,6 +4,7 @@ import fr.xephi.authme.command.executable.*; import fr.xephi.authme.command.executable.authme.*; import fr.xephi.authme.command.executable.changepassword.ChangePasswordCommand; import fr.xephi.authme.command.executable.login.LoginCommand; +import fr.xephi.authme.command.executable.logout.LogoutCommand; import java.util.ArrayList; import java.util.List; @@ -356,6 +357,32 @@ public class CommandManager { loginHelpCommand.addArgument(new CommandArgumentDescription("query", "The command or query to view help for.", true)); loginHelpCommand.setMaximumArguments(false); + // Register the base logout command + CommandDescription logoutBaseCommand = new CommandDescription( + new LogoutCommand(), + new ArrayList() {{ + add("logout"); + }}, + "Logout command", + "Command to logout using AuthMeReloaded.", null); + logoutBaseCommand.setCommandPermissions("authme.logout", CommandPermissions.DefaultPermission.ALLOWED); + + // Register the help command + CommandDescription logoutHelpCommand = new CommandDescription( + new HelpCommand(), + new ArrayList() {{ + add("help"); + add("hlp"); + add("h"); + add("sos"); + add("?"); + }}, + "View help", + "View detailed help pages about AuthMeReloaded register commands.", + logoutBaseCommand); + logoutHelpCommand.addArgument(new CommandArgumentDescription("query", "The command or query to view help for.", true)); + logoutHelpCommand.setMaximumArguments(false); + // Register the base register command CommandDescription registerBaseCommand = new CommandDescription( new RegisterCommand(), @@ -419,6 +446,7 @@ public class CommandManager { // Add the base commands to the commands array this.commandDescriptions.add(authMeBaseCommand); this.commandDescriptions.add(loginBaseCommand); + this.commandDescriptions.add(logoutBaseCommand); this.commandDescriptions.add(registerBaseCommand); this.commandDescriptions.add(changePasswordBaseCommand); } diff --git a/src/main/java/fr/xephi/authme/command/executable/logout/LogoutCommand.java b/src/main/java/fr/xephi/authme/command/executable/logout/LogoutCommand.java new file mode 100644 index 00000000..95b5ab9c --- /dev/null +++ b/src/main/java/fr/xephi/authme/command/executable/logout/LogoutCommand.java @@ -0,0 +1,37 @@ +package fr.xephi.authme.command.executable.logout; + +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.command.CommandParts; +import fr.xephi.authme.command.ExecutableCommand; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class LogoutCommand extends ExecutableCommand { + + /** + * Execute the command. + * + * @param sender The command sender. + * @param commandReference The command reference. + * @param commandArguments The command arguments. + * + * @return True if the command was executed successfully, false otherwise. + */ + @Override + public boolean executeCommand(CommandSender sender, CommandParts commandReference, CommandParts commandArguments) { + // AuthMe plugin instance + final AuthMe plugin = AuthMe.getInstance(); + + // Make sure the current command executor is a player + if(!(sender instanceof Player)) { + return true; + } + + // Get the player instance + final Player player = (Player) sender; + + // Logout the player + plugin.management.performLogout(player); + return true; + } +}