我正在尝试为“我的世界”命令创建和"IDE“。我正在尝试实现自动完成命令,但我不知道该怎么做。这是对bukkit的一次尝试:
// Example command
String fullCommand = "fill 3 ";
String command = "";
List<String> argList = new ArrayList<>();
for (String string : fullCommand.split(" ")) {
if (command == "") {
command = string;
} else {
argList.add(string);
}
}
Command cmd = new Command(command) {
@Override
public boolean execute(CommandSender arg0, String arg1, String[] arg2) {
return false;
}
};
System.out.println(command);
TabCompleter tabCompleter = getCommand(command).getTabCompleter();
tabCompleter.onTabComplete(Bukkit.getConsoleSender(), cmd, command, argList.toArray(new String[0]));
我得到以下错误:
java.lang.NullPointerException
at de.simonmeusel.mcide.plugin.Plugin.onEnable(Plugin.java:44) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:292) ~[s
pigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
.java:340) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
r.java:405) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.loadPlugin(CraftServer.jav
a:361) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.enablePlugins(CraftServer.
java:321) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.reload(CraftServer.java:74
5) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.Bukkit.reload(Bukkit.java:539) [spigot-1.9.2.jar:git-Spigo
t-e000104-4cb3258]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
25) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:14
1) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServe
r.java:645) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchServerCommand(Craf
tServer.java:631) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at net.minecraft.server.v1_9_R1.DedicatedServer.aL(DedicatedServer.java:
438) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:4
01) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:6
60) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java
:559) [spigot-1.9.2.jar:git-Spigot-e000104-4cb3258]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_73]
在bukkit、forge或其他地方有什么方法可以做到这一点吗?
发布于 2017-01-16 06:20:24
尝试更改:
TabCompleter tabCompleter = getCommand(command).getTabCompleter();
至
getCommand(command).setTabCompleter(new TabCompleter() {
@Override
public List<String> onTabComplete(Sender s, Command cmd, String label, String[] args) {
if(s instanceof ConsoleSender && cmd.equalsIgnoreCase("fill") {
return argList;
}
}
});
还要删除最后一行。
如果您有任何疑问,或者如果您对代码有任何错误,请回复此答案。
发布于 2017-01-04 04:21:11
你得到了一个空指针,请确保plugin.yml在源码之外。还要确保没有错误!你应该会好起来的。1.这还取决于您使用的spigot/bukkit jar。1.9+已经重命名了很多!
https://stackoverflow.com/questions/37243298
复制相似问题