为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2022-06-23 09:12:13
我正在创建一个简单的插件Minecraft,它在其中切换命令并为目标玩家获取唯一的 UUID。然而,该public boolean onCommand方法声明它从未使用过。主类(Freeze.java) @Overridepublic 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 {@EventHandlerpublic 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不起作用,因为“方法不会覆盖超类中的方法”。
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

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

javaplugin.getCommand("freeze").setExecutor(yourCommandExecutor);


查看完整回答
反对 回复 2022-06-23
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您的 IDE 告诉您从未使用过您的方法,因为它没有覆盖其中的onCommand方法JavaPlugin(这就是您收到错误“方法没有覆盖其超类中的方法”的原因)。

这可能有几个原因。请检查

  • 您的主要课程正在扩展JavaPlugin课程org.bukkit.plugin.java

  • 您导入了正确的Command类。您需要导入org.bukkit.command.Command而不是org.bukkit.material.Command


查看完整回答
反对 回复 2022-06-23
  • 2 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信