Added the ability to register commands dynamically.

By: sk89q <the.sk89q@gmail.com>
This commit is contained in:
Bukkit/Spigot
2011-10-13 01:05:20 -07:00
parent f5eee9b341
commit fa0a9be46c
4 changed files with 181 additions and 3 deletions

View File

@@ -3,6 +3,9 @@ package org.bukkit.plugin;
import java.io.File;
import java.util.Set;
import org.bukkit.command.CommandDefinition;
import org.bukkit.command.CommandMap;
import org.bukkit.command.PluginCommand;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.bukkit.event.Listener;
@@ -252,4 +255,12 @@ public interface PluginManager {
* @return Set containing all current registered permissions
*/
public Set<Permission> getPermissions();
/**
* Registers a plugin command dynamically.
*
* @param command Command definition to use
* @param plugin Plugin to associate it with
*/
public void registerCommand(CommandDefinition command, Plugin plugin);
}

View File

@@ -23,7 +23,10 @@ import java.util.regex.Matcher;
import org.bukkit.Server;
import java.util.regex.Pattern;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommandYamlParser;
import org.bukkit.command.CommandMap;
import org.bukkit.command.CommandDefinition;
import org.bukkit.command.PluginCommand;
import org.bukkit.command.PluginCommandUtil;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.event.Event;
@@ -270,7 +273,7 @@ public final class SimplePluginManager implements PluginManager {
public void enablePlugin(final Plugin plugin) {
if (!plugin.isEnabled()) {
List<Command> pluginCommands = PluginCommandYamlParser.parse(plugin);
List<Command> pluginCommands = PluginCommandUtil.parse(plugin);
if (!pluginCommands.isEmpty()) {
commandMap.registerAll(plugin.getDescription().getName(), pluginCommands);
@@ -540,4 +543,8 @@ public final class SimplePluginManager implements PluginManager {
public Set<Permission> getPermissions() {
return new HashSet<Permission>(permissions.values());
}
public void registerCommand(CommandDefinition command, Plugin plugin) {
commandMap.register(plugin.getDescription().getName(), PluginCommandUtil.parse(command, plugin));
}
}