为什么插件中从未使用过onCommand

我正在创建一个简单的插件Minecraft,它在其中切换命令并为目标玩家获取唯一的 UUID。然而,该public boolean onCommand方法声明它从未使用过。


主类(Freeze.java)


 @Override

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){


    Player player = (Player) sender;

        if(!Freeze.toggleList.contains(player.getUniqueId())){

            player.sendMessage(ChatColor.GREEN + "sinut on jäädytetty tutkinnan ajaksi");

            Freeze.toggleList.add(player.getUniqueId());

        return true;

        } else if (Freeze.toggleList.contains(player.getUniqueId())){

            player.sendMessage(ChatColor.RED +"Et ole enään jäädytetty");

            Freeze.toggleList.remove(player.getUniqueId());

        return true;

        }

        return true;

    }

}

对于命令的作用,我有一个特定的类


(Toggle.java)


public class Toggle implements Listener {

@EventHandler

public void onPlayerMove(PlayerMoveEvent evt) {

    Player player = evt.getPlayer();

    if (Freeze.toggleList.contains(player.getUniqueId())){

        Location back = new Location(evt.getFrom().getWorld(), evt.getFrom().getX(), evt.getFrom().getY(), evt.getFrom().getZ());

        evt.getPlayer().teleport(back);

    }

}

}


同样在我的plugin.yml我有它的命令:


    commands:

  freeze:

    usage: /<command>

    description: Freezez player.

也@Override不起作用,因为“方法不会覆盖超类中的方法”。


holdtom
浏览 80回答 2
2回答

当年话下

你忘了注册你的命令。必须这样做,以便 bukkitonCommand在执行命令时知道要调用哪个对象的方法。为此,请使用command.setExecutor(CommandExecutor)javaplugin.getCommand("freeze").setExecutor(yourCommandExecutor);

慕的地6264312

您的 IDE 告诉您从未使用过您的方法,因为它没有覆盖其中的onCommand方法JavaPlugin(这就是您收到错误“方法没有覆盖其超类中的方法”的原因)。这可能有几个原因。请检查您的主要课程正在扩展JavaPlugin课程org.bukkit.plugin.java您导入了正确的Command类。您需要导入org.bukkit.command.Command而不是org.bukkit.material.Command
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java