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) {
//
// }
}
}
CommandInjector.java 文件源码
java
阅读 30
收藏 0
点赞 0
评论 0
项目:LagMonitor
作者:
评论列表
文章目录