所以这是我的代码:
http://pastebin.com/26vTQqrZ
这是我的plugin.yml:
名称:测试插件版本: 1.0.0 main: me.TechnicPR.Main
命令:卡梅隆描述:说世界上最好的开发人员!
但由于某些原因,当我执行/cameron时,它会显示未知的命令,而当我执行/pl时,它什么也不显示。
发布于 2016-05-27 22:17:12
您必须缩进您的信息。e.g
name: Name
version: 1.0
main: my.main.class
commands:
example:
description: Example command如果只是StackOverflow,请在评论中说明。还有,请把你的日志也贴出来。
发布于 2016-05-29 11:19:41
好的,首先你有一些主要的问题。我不知道你是自学还是使用教程,但我建议使用these教程。因此,我将从您的plugin.yml文件开始,因为它的设置非常具体。它应该看起来完全像这样:
name: TestingPlugin
version: 1.0.0
main: me.TechnicPR.Main
commands:
cameron:
description: Says the best developer in the world!
usage: /<command>这些部分可以按任何顺序排列;例如,名称不必放在第一位。但是每个部分都必须是小写的。如果它的大写形式与您的"Commands:“相同,那么它将抛出一个错误。此外,您应该始终在每个命令中提供"usage“部分。记住不要使用制表符;你必须使用空格,否则也会抛出一个错误。
至于你的代码,我首先强烈建议你不要把你的onCommand方法放在你的主类中。主类应该只处理文件的加载和保存,以及onEnable/onDisable方法。把插件放在你的主类中,很快就会变得杂乱无章,并使简单的事情复杂化。
但是,无论您是否只使用主类,您仍然需要注册您的命令。在您的onCommand方法之上创建一个新方法,称为"onEnable()“。在其中,使用
getCommand("Cameron").setExecutor(this, this);它应该看起来像这样:
public void onEnable(){
getCommand("Cameron").setExecutor(this, this);
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
if(cmd.getName().equalsIgnoreCase("Cameron")){
sender.sendMessage("Hello!");
}
return true;
}请注意,onCommand返回true。您需要将其设置为true才能获得正确的结果。这并不是应该纠正的一切,但您似乎对此有些陌生,我不想看起来很粗暴。;)希望这能有所帮助!如果您想要或需要更多命令帮助,上面提到的链接将为您提供所需的任何信息。向那家伙索要任何教程,他都会尽快完成的。
发布于 2016-05-28 02:37:01
可能是您没有为命令设置executor类,我不确定它是否适用于JavaPlugin类。尝试将此代码添加到您的onEnable,getCommand("Cameron").setExecutor(this);
https://stackoverflow.com/questions/37463845
复制相似问题