diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java b/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java index 4bd1dfa..5283b99 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/Command.java @@ -2,6 +2,9 @@ package io.github.znetworkw.znpcservers.commands; import com.google.common.collect.Iterables; import io.github.znetworkw.znpcservers.cache.CacheRegistry; +import io.github.znetworkw.znpcservers.commands.exception.CommandException; +import io.github.znetworkw.znpcservers.commands.exception.CommandExecuteException; +import io.github.znetworkw.znpcservers.commands.exception.CommandPermissionException; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandMap; @@ -80,6 +83,8 @@ public class Command extends BukkitCommand { e.printStackTrace(); } catch (CommandPermissionException e) { sender.sendMessage(ChatColor.RED + "You do not have permission to execute this command."); + } catch (CommandException e) { + sender.sendMessage(ChatColor.RED + e.getMessage()); } return true; } diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandExecuteException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandExecuteException.java deleted file mode 100644 index 2603ddf..0000000 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandExecuteException.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.znetworkw.znpcservers.commands; - -public class CommandExecuteException extends Exception { - public CommandExecuteException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java index 2f64963..814621b 100644 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandInvoker.java @@ -1,5 +1,8 @@ package io.github.znetworkw.znpcservers.commands; +import io.github.znetworkw.znpcservers.commands.exception.CommandException; +import io.github.znetworkw.znpcservers.commands.exception.CommandExecuteException; +import io.github.znetworkw.znpcservers.commands.exception.CommandPermissionException; import org.bukkit.entity.Player; import java.lang.reflect.Method; @@ -15,14 +18,17 @@ public class CommandInvoker { this.permission = permission; } - public void execute(CommandSender sender, Object command) throws CommandPermissionException, CommandExecuteException { - if (!(sender instanceof Player) && this.permission.length() == 0) { - throw new CommandPermissionException("Only players may execute this command."); - } - if (this.permission.length() > 0 && !sender.getCommandSender().hasPermission(this.permission)) { + public void execute(CommandSender sender, Object command) throws CommandException { + // Check if the sender is not a player + if (!(sender instanceof Player player)) + throw new CommandException("Only players may execute this command."); + + // Check if the permission is not empty and the player does not have the permission + if (this.permission.length() > 0 && !player.hasPermission(this.permission)) throw new CommandPermissionException("You cannot execute this command."); - } + try { + // Command execution this.commandMethod.invoke(this.command, sender, command); } catch (IllegalAccessException | java.lang.reflect.InvocationTargetException e) { throw new CommandExecuteException(e.getMessage(), e.getCause()); diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandNotFoundException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandNotFoundException.java deleted file mode 100644 index 7811c45..0000000 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.znetworkw.znpcservers.commands; - -public class CommandNotFoundException extends Exception { - public CommandNotFoundException(String message) { - super(message); - } -} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandPermissionException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/CommandPermissionException.java deleted file mode 100644 index a1aaabe..0000000 --- a/src/main/java/io/github/znetworkw/znpcservers/commands/CommandPermissionException.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.znetworkw.znpcservers.commands; - -public class CommandPermissionException extends Exception { - public CommandPermissionException(String message) { - super(message); - } -} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandException.java new file mode 100644 index 0000000..f784b93 --- /dev/null +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandException.java @@ -0,0 +1,21 @@ +package io.github.znetworkw.znpcservers.commands.exception; + +/** + * @author xCodiq - 20/04/2023 + */ +public class CommandException extends Exception { + + private static final long serialVersionUID = 1L; + + public CommandException(String message) { + super(message); + } + + public CommandException(String message, Throwable cause) { + super(message, cause); + } + + public CommandException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandExecuteException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandExecuteException.java new file mode 100644 index 0000000..79661f4 --- /dev/null +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandExecuteException.java @@ -0,0 +1,7 @@ +package io.github.znetworkw.znpcservers.commands.exception; + +public class CommandExecuteException extends CommandException { + public CommandExecuteException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandNotFoundException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandNotFoundException.java new file mode 100644 index 0000000..3f4bd1c --- /dev/null +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandNotFoundException.java @@ -0,0 +1,7 @@ +package io.github.znetworkw.znpcservers.commands.exception; + +public class CommandNotFoundException extends CommandException { + public CommandNotFoundException(String message) { + super(message); + } +} diff --git a/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandPermissionException.java b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandPermissionException.java new file mode 100644 index 0000000..ab05159 --- /dev/null +++ b/src/main/java/io/github/znetworkw/znpcservers/commands/exception/CommandPermissionException.java @@ -0,0 +1,7 @@ +package io.github.znetworkw.znpcservers.commands.exception; + +public class CommandPermissionException extends CommandException { + public CommandPermissionException(String message) { + super(message); + } +}