diff --git a/bukkit/pom.xml b/bukkit/pom.xml index 65dc0aa..756c92e 100644 --- a/bukkit/pom.xml +++ b/bukkit/pom.xml @@ -7,7 +7,7 @@ command-framework-bukkit jar - 0.4-SNAPSHOT + 0.4.1-SNAPSHOT Sk89q Command Framework for Bukkit Supporting classes for running the command framework on Bukkit servers. @@ -22,12 +22,12 @@ com.sk89q command-framework-core - 0.4-SNAPSHOT + 0.4.1-SNAPSHOT org.bukkit bukkit - 1.4.7-R1.0 + 1.5.2-R1.0 diff --git a/bukkit/src/main/java/com/sk89q/bukkit/util/BukkitCommandsManager.java b/bukkit/src/main/java/com/sk89q/bukkit/util/BukkitCommandsManager.java index 41ee940..3b3f8c0 100644 --- a/bukkit/src/main/java/com/sk89q/bukkit/util/BukkitCommandsManager.java +++ b/bukkit/src/main/java/com/sk89q/bukkit/util/BukkitCommandsManager.java @@ -1,12 +1,25 @@ package com.sk89q.bukkit.util; +import com.sk89q.minecraft.util.commands.ConsoleCommandException; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandsManager; +import com.sk89q.minecraft.util.commands.Console; + +import java.lang.reflect.Method; public class BukkitCommandsManager extends CommandsManager { @Override public boolean hasPermission(CommandSender player, String perm) { return player.hasPermission(perm); } + + @Override + public void checkSender(CommandSender sender, Method method) throws CommandException { + if (!method.isAnnotationPresent(Console.class) && sender instanceof ConsoleCommandSender) { + throw new ConsoleCommandException(); + } + } } diff --git a/bungee/pom.xml b/bungee/pom.xml index 88982c4..4a9a5ef 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -7,7 +7,7 @@ command-framework-bungee jar - 0.4-SNAPSHOT + 0.4.1-SNAPSHOT Sk89q Command Framework for BungeeCord Supporting classes for using the command framework on BungeeCord. @@ -22,12 +22,12 @@ com.sk89q command-framework-core - 0.4-SNAPSHOT + 0.4.1-SNAPSHOT net.md-5 bungeecord-api - 1.5-SNAPSHOT + 1.6.1-SNAPSHOT diff --git a/bungee/src/main/java/com/sk89q/bungee/util/BungeeCommandsManager.java b/bungee/src/main/java/com/sk89q/bungee/util/BungeeCommandsManager.java index dc48966..23a4a96 100644 --- a/bungee/src/main/java/com/sk89q/bungee/util/BungeeCommandsManager.java +++ b/bungee/src/main/java/com/sk89q/bungee/util/BungeeCommandsManager.java @@ -4,7 +4,14 @@ import com.sk89q.minecraft.util.commands.CommandsManager; +import java.lang.reflect.Method; + public class BungeeCommandsManager extends CommandsManager { + @Override + public void checkSender(CommandSender sender, Method method) { + // Sender will never be the console + } + @Override public boolean hasPermission(CommandSender player, String perm) { return player.hasPermission(perm); diff --git a/core/pom.xml b/core/pom.xml index 2072e51..8282ea6 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -7,7 +7,7 @@ command-framework-core jar - 0.4-SNAPSHOT + 0.4.1-SNAPSHOT Sk89q Command Fraework Core Core classes for the sk89q command framework. diff --git a/core/src/main/java/com/sk89q/minecraft/util/commands/CommandsManager.java b/core/src/main/java/com/sk89q/minecraft/util/commands/CommandsManager.java index 5774726..0f73ae1 100644 --- a/core/src/main/java/com/sk89q/minecraft/util/commands/CommandsManager.java +++ b/core/src/main/java/com/sk89q/minecraft/util/commands/CommandsManager.java @@ -19,20 +19,15 @@ package com.sk89q.minecraft.util.commands; +import com.sk89q.util.StringUtil; + import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; -import com.sk89q.util.StringUtil; - /** *

Manager for handling commands. This allows you to easily process commands, * including nested commands, by correctly annotating methods of a class.

@@ -425,6 +420,8 @@ public void execute(String[] args, T player, executeMethod(null, args, player, newMethodArgs, 0); } + public abstract void checkSender(T sender, Method method) throws CommandException; + /** * Attempt to execute a command. * @@ -453,6 +450,7 @@ public void executeMethod(Method parent, String[] args, } checkPermission(player, method); + checkSender(player, method); int argsCount = args.length - 1 - level; diff --git a/core/src/main/java/com/sk89q/minecraft/util/commands/ConsoleCommandException.java b/core/src/main/java/com/sk89q/minecraft/util/commands/ConsoleCommandException.java new file mode 100644 index 0000000..76a7529 --- /dev/null +++ b/core/src/main/java/com/sk89q/minecraft/util/commands/ConsoleCommandException.java @@ -0,0 +1,7 @@ +package com.sk89q.minecraft.util.commands; + +/** + * Raised when the console attempts to execute a command not annotated with {@link Console}. + */ +public class ConsoleCommandException extends CommandException { +} diff --git a/bukkit/src/main/java/com/sk89q/bukkit/pagination/PaginatedResult.java b/core/src/main/java/com/sk89q/minecraft/util/pagination/PaginatedResult.java similarity index 85% rename from bukkit/src/main/java/com/sk89q/bukkit/pagination/PaginatedResult.java rename to core/src/main/java/com/sk89q/minecraft/util/pagination/PaginatedResult.java index 39a6dee..926021c 100644 --- a/bukkit/src/main/java/com/sk89q/bukkit/pagination/PaginatedResult.java +++ b/core/src/main/java/com/sk89q/minecraft/util/pagination/PaginatedResult.java @@ -16,15 +16,14 @@ * along with this program. If not, see . */ -package com.sk89q.bukkit.pagination; +package com.sk89q.minecraft.util.pagination; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.bukkit.command.CommandSender; - import com.sk89q.minecraft.util.commands.CommandException; +import com.sk89q.minecraft.util.commands.WrappedCommandSender; /** * Commands that wish to display a paginated list of results can use this class to do @@ -42,11 +41,11 @@ public PaginatedResult(int resultsPerPage) { this.resultsPerPage = resultsPerPage; } - public void display(CommandSender sender, Collection results, int page) throws CommandException { + public void display(WrappedCommandSender sender, Collection results, int page) throws CommandException { this.display(sender, new ArrayList(results), page); } - public void display(CommandSender sender, List results, int page) throws CommandException { + public void display(WrappedCommandSender sender, List results, int page) throws CommandException { if (results.size() == 0) throw new CommandException("No results match!"); int maxPages = results.size() / this.resultsPerPage + 1; diff --git a/bukkit/src/main/java/com/sk89q/bukkit/pagination/SimplePaginatedResult.java b/core/src/main/java/com/sk89q/minecraft/util/pagination/SimplePaginatedResult.java similarity index 84% rename from bukkit/src/main/java/com/sk89q/bukkit/pagination/SimplePaginatedResult.java rename to core/src/main/java/com/sk89q/minecraft/util/pagination/SimplePaginatedResult.java index 8d69ef8..69c1eae 100644 --- a/bukkit/src/main/java/com/sk89q/bukkit/pagination/SimplePaginatedResult.java +++ b/core/src/main/java/com/sk89q/minecraft/util/pagination/SimplePaginatedResult.java @@ -1,6 +1,6 @@ -package com.sk89q.bukkit.pagination; +package com.sk89q.minecraft.util.pagination; -import org.bukkit.ChatColor; +import com.sk89q.minecraft.util.commands.ChatColor; public abstract class SimplePaginatedResult extends PaginatedResult {