geforkt von Mirrors/Paper
Added the ability to register commands dynamically.
By: sk89q <the.sk89q@gmail.com>
Dieser Commit ist enthalten in:
Ursprung
f5eee9b341
Commit
fa0a9be46c
133
paper-api/src/main/java/org/bukkit/command/CommandDefinition.java
Normale Datei
133
paper-api/src/main/java/org/bukkit/command/CommandDefinition.java
Normale Datei
@ -0,0 +1,133 @@
|
|||||||
|
package org.bukkit.command;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a command that can be registered dynamically.
|
||||||
|
*
|
||||||
|
* @author sk89q
|
||||||
|
*/
|
||||||
|
public class CommandDefinition {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String description;
|
||||||
|
private String usage;
|
||||||
|
private List<String> aliases = new ArrayList<String>();
|
||||||
|
private String permission;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct the command with a given name.
|
||||||
|
*
|
||||||
|
* @param name The command name (without a preceding /)
|
||||||
|
*/
|
||||||
|
public CommandDefinition(String name) {
|
||||||
|
setName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct the command with a given name and description.
|
||||||
|
*
|
||||||
|
* @param name The command name
|
||||||
|
* @param description The command description (without a preceding /)
|
||||||
|
*/
|
||||||
|
public CommandDefinition(String name, String description) {
|
||||||
|
setName(name);
|
||||||
|
setDescription(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name.
|
||||||
|
*
|
||||||
|
* @return Command name
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the command name.
|
||||||
|
*
|
||||||
|
* @param name Command name
|
||||||
|
*/
|
||||||
|
public void setName(String name) {
|
||||||
|
if (name == null) {
|
||||||
|
throw new IllegalArgumentException("Cannot have a null command name");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the description.
|
||||||
|
*
|
||||||
|
* @return Command description, possibly null
|
||||||
|
*/
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the command description.
|
||||||
|
*
|
||||||
|
* @param name Command description, possibly null
|
||||||
|
*/
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the usage string.
|
||||||
|
*
|
||||||
|
* @return Command description, possibly null
|
||||||
|
*/
|
||||||
|
public String getUsage() {
|
||||||
|
return usage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the command usage string.
|
||||||
|
*
|
||||||
|
* @param name Command usage string, possibly null
|
||||||
|
*/
|
||||||
|
public void setUsage(String usage) {
|
||||||
|
this.usage = usage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of aliases.
|
||||||
|
*
|
||||||
|
* @return List of aliases, possibly null
|
||||||
|
*/
|
||||||
|
public List<String> getAliases() {
|
||||||
|
return aliases;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the list of aliases.
|
||||||
|
*
|
||||||
|
* @param aliases List of aliases
|
||||||
|
*/
|
||||||
|
public void setAliases(List<String> aliases) {
|
||||||
|
this.aliases = aliases;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the permission.
|
||||||
|
*
|
||||||
|
* @return Command permission, possibly null
|
||||||
|
*/
|
||||||
|
public String getPermission() {
|
||||||
|
return permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the permission.
|
||||||
|
*
|
||||||
|
* @param name Command permission, possibly null
|
||||||
|
*/
|
||||||
|
public void setPermission(String permission) {
|
||||||
|
this.permission = permission;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -7,7 +7,7 @@ import java.util.Map.Entry;
|
|||||||
|
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
public class PluginCommandYamlParser {
|
public class PluginCommandUtil {
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public static List<Command> parse(Plugin plugin) {
|
public static List<Command> parse(Plugin plugin) {
|
||||||
@ -59,4 +59,31 @@ public class PluginCommandYamlParser {
|
|||||||
}
|
}
|
||||||
return pluginCmds;
|
return pluginCmds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Command parse(CommandDefinition command, Plugin plugin) {
|
||||||
|
Command newCmd = new PluginCommand(command.getName(), plugin);
|
||||||
|
String description = command.getDescription();
|
||||||
|
String usage = command.getUsage();
|
||||||
|
List<String> aliases = command.getAliases();
|
||||||
|
String permission = command.getPermission();
|
||||||
|
|
||||||
|
if (description != null) {
|
||||||
|
newCmd.setDescription(description);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (usage != null) {
|
||||||
|
newCmd.setUsage(usage);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aliases != null) {
|
||||||
|
newCmd.setAliases(aliases);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (permission != null) {
|
||||||
|
newCmd.setPermission(permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
return newCmd;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -3,6 +3,9 @@ package org.bukkit.plugin;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Set;
|
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;
|
||||||
import org.bukkit.event.Event.Priority;
|
import org.bukkit.event.Event.Priority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
@ -252,4 +255,12 @@ public interface PluginManager {
|
|||||||
* @return Set containing all current registered permissions
|
* @return Set containing all current registered permissions
|
||||||
*/
|
*/
|
||||||
public Set<Permission> getPermissions();
|
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);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,10 @@ import java.util.regex.Matcher;
|
|||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.bukkit.command.Command;
|
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.command.SimpleCommandMap;
|
||||||
|
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
@ -270,7 +273,7 @@ public final class SimplePluginManager implements PluginManager {
|
|||||||
|
|
||||||
public void enablePlugin(final Plugin plugin) {
|
public void enablePlugin(final Plugin plugin) {
|
||||||
if (!plugin.isEnabled()) {
|
if (!plugin.isEnabled()) {
|
||||||
List<Command> pluginCommands = PluginCommandYamlParser.parse(plugin);
|
List<Command> pluginCommands = PluginCommandUtil.parse(plugin);
|
||||||
|
|
||||||
if (!pluginCommands.isEmpty()) {
|
if (!pluginCommands.isEmpty()) {
|
||||||
commandMap.registerAll(plugin.getDescription().getName(), pluginCommands);
|
commandMap.registerAll(plugin.getDescription().getName(), pluginCommands);
|
||||||
@ -540,4 +543,8 @@ public final class SimplePluginManager implements PluginManager {
|
|||||||
public Set<Permission> getPermissions() {
|
public Set<Permission> getPermissions() {
|
||||||
return new HashSet<Permission>(permissions.values());
|
return new HashSet<Permission>(permissions.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void registerCommand(CommandDefinition command, Plugin plugin) {
|
||||||
|
commandMap.register(plugin.getDescription().getName(), PluginCommandUtil.parse(command, plugin));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren