From d2968b1976d828e370d34d74d5af4df9edfaf0e5 Mon Sep 17 00:00:00 2001 From: zml2008 Date: Sat, 17 Mar 2012 15:14:58 -0700 Subject: [PATCH] Updated SpoutRawCommandExecutor for changes in SpoutAPI and register command permissions with the Spout commands system --- .../spout/SpoutRawCommandExecutor.java | 5 +++-- .../worldedit/spout/SpoutServerInterface.java | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/spout/SpoutRawCommandExecutor.java b/src/main/java/com/sk89q/worldedit/spout/SpoutRawCommandExecutor.java index f5a69e71a..f9924a2c8 100644 --- a/src/main/java/com/sk89q/worldedit/spout/SpoutRawCommandExecutor.java +++ b/src/main/java/com/sk89q/worldedit/spout/SpoutRawCommandExecutor.java @@ -18,6 +18,7 @@ package com.sk89q.worldedit.spout; +import org.spout.api.command.Command; import org.spout.api.command.CommandSource; import org.spout.api.command.RawCommandExecutor; import org.spout.api.exception.CommandException; @@ -35,8 +36,8 @@ public class SpoutRawCommandExecutor implements RawCommandExecutor { } @Override - public void execute(CommandSource source, String[] args, int baseIndex, boolean fuzzyLookup) throws CommandException { - args[baseIndex] = "/" + args[baseIndex]; + public void execute(Command cmd, CommandSource source, String[] args, int baseIndex, boolean fuzzyLookup) throws CommandException { + args[baseIndex] = "/" + cmd.getPreferredName(); if (!plugin.getWorldEdit().handleCommand(plugin.wrapCommandSender(source), MiscCompatibilityUtils.arrayCopyOfRange(args, baseIndex, args.length))) { throw new CommandException("Unknown command: '" + args[baseIndex] + "'!"); } diff --git a/src/main/java/com/sk89q/worldedit/spout/SpoutServerInterface.java b/src/main/java/com/sk89q/worldedit/spout/SpoutServerInterface.java index 0600bf0d5..a035a6ff9 100644 --- a/src/main/java/com/sk89q/worldedit/spout/SpoutServerInterface.java +++ b/src/main/java/com/sk89q/worldedit/spout/SpoutServerInterface.java @@ -20,6 +20,9 @@ package com.sk89q.worldedit.spout; import com.sk89q.minecraft.util.commands.Command; +import com.sk89q.minecraft.util.commands.CommandPermissions; +import com.sk89q.minecraft.util.commands.CommandsManager; +import com.sk89q.worldedit.LocalPlayer; import com.sk89q.worldedit.LocalWorld; import com.sk89q.worldedit.ServerInterface; import org.spout.api.Game; @@ -28,6 +31,7 @@ import org.spout.api.geo.World; import org.spout.api.material.Material; import org.spout.api.material.MaterialData; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -76,13 +80,18 @@ public class SpoutServerInterface extends ServerInterface { return ret; } - + @Override - public void onCommandRegistration(List commands) { + public void onCommandRegistration(List commands, CommandsManager manager) { for (Command command : commands) { - Spout.getGame().getRootCommand().addSubCommand(plugin, command.aliases()[0]) + org.spout.api.command.Command spoutCommand = Spout.getGame().getRootCommand().addSubCommand(plugin, command.aliases()[0]) .addAlias(command.aliases()).setRawExecutor(executor). - setUsage(command.usage()).setHelp(command.desc()).closeSubCommand(); + setUsage(command.usage()).setHelp(command.desc()); + Method cmdMethod = manager.getMethods().get(null).get(command.aliases()[0]); + if (cmdMethod != null && cmdMethod.isAnnotationPresent(CommandPermissions.class)) { + spoutCommand.setPermissions(false, cmdMethod.getAnnotation(CommandPermissions.class).value()); + } + spoutCommand.closeSubCommand(); } } }