Register command permissions, integrate with the Bukkit help API

Help API support requires a fix in Bukkit to work fully
Allow annotation-free registering of commands with other plugins
This commit is contained in:
zml2008
2012-03-09 23:11:51 -08:00
parent 956b3dd02f
commit 4328be282c
9 changed files with 310 additions and 72 deletions

View File

@ -19,12 +19,17 @@
package com.sk89q.worldedit.bukkit;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import com.sk89q.bukkit.util.CommandInfo;
import com.sk89q.bukkit.util.CommandRegistration;
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 org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Server;
@ -78,12 +83,23 @@ public class BukkitServerInterface extends ServerInterface {
return ret;
}
@Override
public void onCommandRegistration(List<Command> commands) {
dynamicCommands.registerAll(commands);
public void onCommandRegistration(List<Command> commands, CommandsManager<LocalPlayer> manager) {
List<CommandInfo> toRegister = new ArrayList<CommandInfo>();
for (Command command : commands) {
String[] permissions = null;
Method cmdMethod = manager.getMethods().get(null).get(command.aliases()[0]);
if (cmdMethod != null && cmdMethod.isAnnotationPresent(CommandPermissions.class)) {
permissions = cmdMethod.getAnnotation(CommandPermissions.class).value();
}
toRegister.add(new CommandInfo(command.usage(), command.desc(), command.aliases(), manager, permissions));
}
dynamicCommands.register(toRegister);
}
public void unregisterCommands() {
dynamicCommands.unregisterCommands();
}