Я делаю простой /heal
плагин CraftBukkit Beta Build 1.7.2 R0.3
для CraftBukkit Beta Build 1.7.2 R0.3
. (Я новичок в java.) Я программирую в Eclipse. Я получаю сообщение об ошибке:
Вот мой код:
public boolean onCommand_heal(CommandSender sender, Command cmd, String commandLabel, String[] args){
Player player = (Player) sender;
if(commandLabel.equalsIgnoreCase("heal")){
if(args.length == 0){
player.setHealth(20);
player.setFireTicks(0);
player.sendMessage(ChatColor.GOLD + "You are healed!");
}else if(args.length == 1){
if(player.getServer().getPlayer(args[0]) !=null){
Player targetPlayer = player.getServer().getPlayer(args[0]);
targetPlayer.setHealth(20);
player.sendMessage(ChatColor.GOLD + "Player Healed!");
}else{
player.sendMessage(ChatColor.RED + "PLAYER NOT ONLINE!");
}
}
}
return false;
}
Попробуйте сделать это:
Player targetPlayer = Bukkit.getServer().getPlayer(args[0]);
//or this:
Player targetPlayer = plugin.getServer().getPlayer(args[0]);
вместо
Player targetPlayer = player.getServer().getPlayer(args[0]);
и то же самое здесь, замените:
if(player.getServer().getPlayer(args[0]) !=null){
с:
if(Bukkit.getServer().getPlayer(args[0]) != null){
Кроме того, вы должны всегда использовать floats
при настройке работоспособности с момента последнего обновления Bukkit. setHealth(int)
устарел и заменен на setHealth(float)
, поэтому попробуйте:
targetPlayer.setHealth(20.0f);
player.getServer()
наBukkit.getServer()
имеет значения и на самом деле может быть отклонен в зависимости от стиля кодирования. @ mas0701 убедитесь, что вы проверили этот экземпляр Commandsender Player перед кастом, как сейчас, если вы запустите эту команду из консоли, вы получите неприятную ошибку.