我正在为 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
不起作用,因为“方法不会覆盖父类(super class)中的方法”。
最佳答案
您忘记注册您的命令。必须这样做,以便 bukkit 知道在执行命令时要调用哪个对象的 onCommand
方法。为此,请使用 command.setExecutor(CommandExecutor)
javaplugin.getCommand("freeze").setExecutor(yourCommandExecutor);
关于java - 为什么 onCommand 从未在插件中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54704821/