2016-05-15 78 views
0

我正在尝试为minecraft命令创建和“IDE”。我试图实现命令自动完成,我无法弄清楚如何做到这一点。这是与bukkit一试:Minecraft自动完成

// 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,伪造或者其他什么东西?

+0

插件类中的第44行是什么? – ItzBenteThePig

+0

TabCompleter tabCompleter = getCommand(command).getTabCompleter(); –

+0

你会得到一个空指针,你的插件类是否扩展或实现了什么,以及你包含了多少类? – ItzBenteThePig

回答

0

(Picture of error) try:

你得到一个空指针,确保plugin.yml是SRC之外。 也请确保没有错误!你应该没问题。 1.这也取决于你使用什么spigot/bukkit罐。 1.9+已经改名了很多!

0

尝试改变:

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; 
     } 
    } 
}); 

同时删除的最后一行。

如果您有任何疑问或者如果您有任何代码错误,请回答此答案。

+0

事情是:我不想为新命令设置制表符完成程序,如果想看看我的世界将如何自动完成现有的命令 –