Java 类org.bukkit.command.PluginIdentifiableCommand 实例源码
项目:Pore
文件:PoreCommandMap.java
@Override
public boolean register(String label, String fallbackPrefix, Command command) {
// TODO: Label
// TODO: Fallback prefix
Object plugin = Pore.getPlugin();
if (command instanceof PluginIdentifiableCommand) {
plugin = Pore.getPlugin(((PluginIdentifiableCommand) command).getPlugin());
}
List<String> aliases = Lists.newArrayList(command.getAliases());
String name = command.getName();
if (!name.equals(label)) {
aliases.add(0, label);
}
aliases.add(0, name);
Optional<CommandMapping> result = handle.register(plugin, new PoreCommandCallable(command), aliases);
if (result.isPresent()) {
command.register(this);
return true;
} else {
return false;
}
}
项目:LagMonitor
文件:CommandInjector.java
public static void inject(Plugin toInjectPlugin) {
PluginManager pluginManager = Bukkit.getPluginManager();
SimpleCommandMap commandMap = Reflection
.getField(SimplePluginManager.class, "commandMap", SimpleCommandMap.class).get(pluginManager);
for (Command command : commandMap.getCommands()) {
if (command instanceof PluginCommand) {
PluginIdentifiableCommand pluginCommand = (PluginIdentifiableCommand) command;
Plugin plugin = pluginCommand.getPlugin();
if (plugin.equals(toInjectPlugin)) {
FieldAccessor<CommandExecutor> executorField = Reflection
.getField(PluginCommand.class, "executor", CommandExecutor.class);
FieldAccessor<TabCompleter> completerField = Reflection
.getField(PluginCommand.class, "completer", TabCompleter.class);
CommandExecutor executor = executorField.get(pluginCommand);
TabCompleter completer = completerField.get(pluginCommand);
CommandInjector commandInjector = new CommandInjector(executor, completer);
executorField.set(pluginCommand, commandInjector);
completerField.set(pluginCommand, commandInjector);
}
}
//idea: inject also vanilla commands?
// if (command instanceof VanillaCommand) {
//
// }
}
}
项目:LagMonitor
文件:CommandInjector.java
public static void uninject(Plugin toUninject) {
PluginManager pluginManager = Bukkit.getPluginManager();
SimpleCommandMap commandMap = Reflection
.getField(SimplePluginManager.class, "commandMap", SimpleCommandMap.class).get(pluginManager);
for (Command command : commandMap.getCommands()) {
if (command instanceof PluginCommand) {
PluginIdentifiableCommand pluginCommand = (PluginIdentifiableCommand) command;
Plugin plugin = pluginCommand.getPlugin();
if (plugin.equals(toUninject)) {
FieldAccessor<CommandExecutor> executorField = Reflection
.getField(PluginCommand.class, "executor", CommandExecutor.class);
FieldAccessor<TabCompleter> completerField = Reflection
.getField(PluginCommand.class, "completer", TabCompleter.class);
CommandExecutor executor = executorField.get(pluginCommand);
if (executor instanceof CommandInjector) {
executorField.set(pluginCommand, ((CommandInjector) executor).originalExecutor);
}
TabCompleter completer = completerField.get(pluginCommand);
if (completer instanceof CommandInjector) {
completerField.set(pluginCommand, ((CommandInjector) completer).originalCompleter);
}
}
}
}
}
项目:LagMonitor
文件:CommandInjector.java
public static void inject(Plugin toInjectPlugin) {
PluginManager pluginManager = Bukkit.getPluginManager();
SimpleCommandMap commandMap = Reflection
.getField(SimplePluginManager.class, "commandMap", SimpleCommandMap.class).get(pluginManager);
for (Command command : commandMap.getCommands()) {
if (command instanceof PluginCommand) {
PluginIdentifiableCommand pluginCommand = (PluginIdentifiableCommand) command;
Plugin plugin = pluginCommand.getPlugin();
if (plugin.equals(toInjectPlugin)) {
FieldAccessor<CommandExecutor> executorField = Reflection
.getField(PluginCommand.class, "executor", CommandExecutor.class);
FieldAccessor<TabCompleter> completerField = Reflection
.getField(PluginCommand.class, "completer", TabCompleter.class);
CommandExecutor executor = executorField.get(pluginCommand);
TabCompleter completer = completerField.get(pluginCommand);
CommandInjector commandInjector = new CommandInjector(executor, completer);
executorField.set(pluginCommand, commandInjector);
completerField.set(pluginCommand, commandInjector);
}
}
//idea: inject also vanilla commands?
// if (command instanceof VanillaCommand) {
//
// }
}
}
项目:LagMonitor
文件:CommandInjector.java
public static void uninject(Plugin toUninject) {
PluginManager pluginManager = Bukkit.getPluginManager();
SimpleCommandMap commandMap = Reflection
.getField(SimplePluginManager.class, "commandMap", SimpleCommandMap.class).get(pluginManager);
for (Command command : commandMap.getCommands()) {
if (command instanceof PluginCommand) {
PluginIdentifiableCommand pluginCommand = (PluginIdentifiableCommand) command;
Plugin plugin = pluginCommand.getPlugin();
if (plugin.equals(toUninject)) {
FieldAccessor<CommandExecutor> executorField = Reflection
.getField(PluginCommand.class, "executor", CommandExecutor.class);
FieldAccessor<TabCompleter> completerField = Reflection
.getField(PluginCommand.class, "completer", TabCompleter.class);
CommandExecutor executor = executorField.get(pluginCommand);
if (executor instanceof CommandInjector) {
executorField.set(pluginCommand, ((CommandInjector) executor).originalExecutor);
}
TabCompleter completer = completerField.get(pluginCommand);
if (completer instanceof CommandInjector) {
completerField.set(pluginCommand, ((CommandInjector) completer).originalCompleter);
}
}
}
}
}
项目:intake-spigot
文件:CommandRegistrationManager.java
/**
* Attempts to register a command with the corresponding server's command map. Note that this method uses Reflection
* to access the command map and may fail due to that. The command map is cached once retrieved.
*
* @param command the command to register
* @throws IllegalStateException if retrieval of the command map fails
* @deprecated This method always uses the static fallback prefix "mtc". Prefer {@link #registerCommand(Command,
* String)}.
*/
@Deprecated
public <T extends Command & PluginIdentifiableCommand> void registerCommand(T command) throws IllegalStateException {
registerCommand(command, "mtc");
}
项目:intake-spigot
文件:CommandRegistrationManager.java
/**
* Attempts to register a command with the corresponding server's command map. Note that this method uses Reflection
* to access the command map and may fail due to that. The command map is cached once retrieved.
*
* @param command the command to register
* @param fallbackPrefix the fallback prefix to use if that command's preferred name is already taken
* @throws IllegalStateException if retrieval of the command map fails
* @see CommandMap#register(String, Command)
*/
public <T extends Command & PluginIdentifiableCommand> void registerCommand(T command, String fallbackPrefix) throws IllegalStateException {
getCommandMap(command.getPlugin().getServer()).register(fallbackPrefix, command);
}