我正在为Minecraft
创建一个简单的插件,它在其中切换命令并使目标玩家获得唯一的UUID。然而,public boolean onCommand
方法声明它从未使用过。
mainclass(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
无法正常工作,因为“方法不会覆盖超类的方法”。
你忘了注册你的命令。必须这样做,以便bukkit知道在执行命令时要调用哪个对象的onCommand
方法。为此,请使用command.setExecutor(CommandExecutor)
javaplugin.getCommand("freeze").setExecutor(yourCommandExecutor);
你的IDE告诉你你的方法从未使用过,因为它没有覆盖onCommand
中的JavaPlugin
方法(这就是你得到错误“方法不会覆盖其超类方法”的原因)。
这可能有几个原因。请检查一下
JavaPlugin
扩展org.bukkit.plugin.java
课程Command
类。你需要导入org.bukkit.command.Command
而不是org.bukkit.material.Command