Java Bukkit插件不工作?

Java Bukkit插件不工作?,java,bukkit,Java,Bukkit,所以我最近尝试为minecraft制作一个bukkit插件。 这个想法是,这将只是一个测试插件,看看我是否可以做到这一点,显然我不能。这是我想出的密码 package me.glowhoo.BlockChanger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import or

所以我最近尝试为minecraft制作一个bukkit插件。 这个想法是,这将只是一个测试插件,看看我是否可以做到这一点,显然我不能。这是我想出的密码

package me.glowhoo.BlockChanger;  import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class BlockChanger extends JavaPlugin
{
@Override public void onEnable() {
    Bukkit.getLogger().info(this.getDescription().getName() +
            " has been enabled");
     }
@Override public void onDisable() {
    Bukkit.getLogger().info(this.getDescription().getName() + " has been disabled");
    } 
@Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    /*command: /tpa Glowhoo
     * args.length = 1
     * args[0] = Glowhoo
     * command.getName() = tpa
     */
    if (cmd.getName().equalsIgnoreCase("message")){
        if(sender instanceof Player)
        {
            /*ComandSender sender-who sent the command
             * Command cmd- the command that was executed
             * String commandLabel-the command alias that was used
             * String[] args-array of additional arguments
             */
            sender.sendMessage(ChatColor.RED +"Hello player!");
        }else
        {
            sender.sendMessage(ChatColor.AQUA +"Hello console!");               
        }
     }
    return false;
   }
 } 
因此,问题是,每当我加载服务器时,它都会说“BlockChanger已启用”,但当我尝试键入它仅有的命令(message)或/message时,什么都不会发生,它会说这是一个无法识别的命令,并键入/help以获取信息。但问题并没有就此结束,每当我试图启动插件时,90%的时间我都会遇到plugin.yml错误,我不完全理解,但如果你们中有人知道这个问题,请回复

我的plugin.yml文件在这里(注意:这个plugin.yml副本实际上可以工作,但是命令本身不能):


您的
plugin.yml
不正确。您需要在
命令
下缩进
消息
,以定义节点。当前,
命令
是一个无效的键值。将相关部分更改为:

commands: 
  message:
    usage: /message

现在是将来的某个时间,但如果您再次使用此命令,当您有一个命令时,您需要返回true,否则它将告诉您这是一个错误的命令,即使您的.yml/.yaml文件设置正确。因此,您需要执行以下操作,以使其在调用时注册您的命令:

package me.glowhoo.BlockChanger;  import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class BlockChanger extends JavaPlugin
{
@Override public void onEnable() {
    Bukkit.getLogger().info(this.getDescription().getName() +
            " has been enabled");
     }
@Override public void onDisable() {
    Bukkit.getLogger().info(this.getDescription().getName() + " has been disabled");
    } 
@Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    /*command: /tpa Glowhoo
     * args.length = 1
     * args[0] = Glowhoo
     * command.getName() = tpa
     */
    if (cmd.getName().equalsIgnoreCase("message")){
        if(sender instanceof Player)
        {
            /*ComandSender sender-who sent the command
             * Command cmd- the command that was executed
             * String commandLabel-the command alias that was used
             * String[] args-array of additional arguments
             */
            sender.sendMessage(ChatColor.RED +"Hello player!");
        }else
        {
            sender.sendMessage(ChatColor.AQUA +"Hello console!");               
        }
        return true;
     }
    return false;
   }
 }

您需要在onEnable方法中将该类注册为命令执行器。

edit:尽管它现在可以工作,但每当我键入命令/消息时,它都会显示“Hello player!”然后还会显示plugin.yml中定义的用法。有什么建议吗?@Peter_Browning:返回true而不是false。你的答案可能会从一段代码片段中受益匪浅,以显示你的确切意思
package me.glowhoo.BlockChanger;  import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class BlockChanger extends JavaPlugin
{
@Override public void onEnable() {
    Bukkit.getLogger().info(this.getDescription().getName() +
            " has been enabled");
     }
@Override public void onDisable() {
    Bukkit.getLogger().info(this.getDescription().getName() + " has been disabled");
    } 
@Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    /*command: /tpa Glowhoo
     * args.length = 1
     * args[0] = Glowhoo
     * command.getName() = tpa
     */
    if (cmd.getName().equalsIgnoreCase("message")){
        if(sender instanceof Player)
        {
            /*ComandSender sender-who sent the command
             * Command cmd- the command that was executed
             * String commandLabel-the command alias that was used
             * String[] args-array of additional arguments
             */
            sender.sendMessage(ChatColor.RED +"Hello player!");
        }else
        {
            sender.sendMessage(ChatColor.AQUA +"Hello console!");               
        }
        return true;
     }
    return false;
   }
 }