我正在为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
也不起作用,因为“方法不会覆盖超类的方法”。
答案 0 :(得分:2)
您忘记注册命令了。必须这样做,以便bukkit在执行命令时知道要调用哪个对象的onCommand
方法。为此,请使用command.setExecutor(CommandExecutor)
javaplugin.getCommand("freeze").setExecutor(yourCommandExecutor);
答案 1 :(得分:2)
您的IDE告诉您从未使用过您的方法,因为它不会覆盖semver spec
中的onCommand
方法(这就是为什么您会收到错误消息:“方法未从其超类覆盖方法” )。
这可能有几个原因。请检查
JavaPlugin
中的JavaPlugin
类org.bukkit.plugin.java
类。您需要导入Command
而不是org.bukkit.command.Command