fix: 修复命令自动创建未注册的问题

This commit is contained in:
coding 2017-10-17 06:47:23 +00:00
parent e7a362d827
commit 65446674f6

View File

@ -10,6 +10,9 @@ var bukkit = require('./bukkit');
var commandMap = ref.on(bukkit.plugin.manager).get('commandMap').get(); var commandMap = ref.on(bukkit.plugin.manager).get('commandMap').get();
var PluginCommand = Java.type('org.bukkit.command.PluginCommand'); var PluginCommand = Java.type('org.bukkit.command.PluginCommand');
var StringUtil = Java.type('org.bukkit.util.StringUtil');
var ArrayList = Java.type('java.util.ArrayList');
var Arrays = Java.type('java.util.Arrays') var Arrays = Java.type('java.util.Arrays')
function enable(jsp){ function enable(jsp){
@ -37,11 +40,12 @@ function get(name) {
} }
function create(jsp, name) { function create(jsp, name) {
return ref.on(PluginCommand).create(name, plugin).get(); return register(jsp, ref.on(PluginCommand).create(name, plugin).get());
} }
function register(jsp, cmd){ function register(jsp, cmd){
commandMap.register(jsp.description.name, cmd); commandMap.register(jsp.description.name, cmd);
return cmd;
} }
// var exec = { // var exec = {
@ -52,8 +56,10 @@ function register(jsp, cmd){
// //
// } // }
// }; // };
function on(jsp, name, exec) { function on(jsp, name, exec) {
var c = get(name) || create(jsp, name); var c = get(name) || create(jsp, name);
log.d('插件 %s 设置命令 %s(%s) 执行器 ...', jsp.description.name, name, c);
if (exec.cmd) { if (exec.cmd) {
c.setExecutor(function (sender, cmd, command, args) { c.setExecutor(function (sender, cmd, command, args) {
return exec.cmd(sender, command, args); return exec.cmd(sender, command, args);
@ -61,7 +67,10 @@ function on(jsp, name, exec) {
} }
if (exec.tab) { if (exec.tab) {
c.setTabCompleter(function (sender, cmd, command, args) { c.setTabCompleter(function (sender, cmd, command, args) {
return Arrays.asList(exec.tab(sender, command, args)); var completions = new ArrayList();
var token = args[args.length - 1];
StringUtil.copyPartialMatches(token, Arrays.asList(exec.tab(sender, command, args)), completions);
return completions;
}); });
} }
} }