Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите HealthBar над головой каждого игрока

FyuzYT

Активный участник
Пользователь
Баллы
76
Здравствуйте, вот я решил сделать плагин HealthBar.
И я незнаю как вывести этот текст над головой..
Помогите, заранее спасибо.

P.S. Сделал это дело по команде "/hp". Выводит по 10 бальной шкале. Пример:HP: 9 / 10
Source:
Код:
package fyuz.plugin.events;

import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class MainClass extends JavaPlugin implements Listener {
    public static final Logger _log = Logger.getLogger("Minecraft");
   
    private static MainClass instance;
   
    public static MainClass instance(){
        return instance;
    }
   
    public void onEnable(){
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    public void onDisable(){
    }
   
    public boolean checkSender(CommandSender sender) {
        if (sender instanceof Player){
            return false;
        }
        return false;
    }
   
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        if (cmd.getName().equalsIgnoreCase("hp")){
            if (checkSender(sender)){
                sender.sendMessage("You console!");
                return true;
            }
            Player p = (Player) sender;
               
                if (p.getHealth() == 20.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 10 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 19.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 10 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 18.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 9 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 17.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 9 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 16.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 8 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 15.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 8 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 14.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 7 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 13.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 7 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 12.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 6 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 11.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 6 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 10.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 5 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 9.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 5 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 8.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 4 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 7.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 4 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 6.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 3 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 5.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 3 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 4.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 2 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 3.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 2 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 2.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 1 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 1.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 1 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
            }
        return false;
    }
}
 
Последнее редактирование:
Здравствуйте, вот я решил сделать плагин HealthBar.
И я незнаю как вывести этот текст над головой..
Помогите, заранее спасибо.

P.S. Сделал это дело по команде "/hp". Выводит по 10 бальной шкале. Пример:HP: 9 / 10
Source:
Код:
package fyuz.plugin.events;

import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;

public class MainClass extends JavaPlugin implements Listener {
    public static final Logger _log = Logger.getLogger("Minecraft");
  
    private static MainClass instance;
  
    public static MainClass instance(){
        return instance;
    }
  
    public void onEnable(){
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    public void onDisable(){
    }
  
    public boolean checkSender(CommandSender sender) {
        if (sender instanceof Player){
            return false;
        }
        return false;
    }
  
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        if (cmd.getName().equalsIgnoreCase("hp")){
            if (checkSender(sender)){
                sender.sendMessage("You console!");
                return true;
            }
            Player p = (Player) sender;
              
                if (p.getHealth() == 20.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 10 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 19.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 10 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 18.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 9 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 17.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 9 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 16.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 8 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 15.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 8 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 14.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 7 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 13.0){
                    p.sendMessage("HP:" + ChatColor.DARK_GREEN + " 7 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 12.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 6 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 11.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 6 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 10.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 5 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 9.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 5 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 8.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 4 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 7.0){
                    p.sendMessage("HP:" + ChatColor.YELLOW + " 4 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 6.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 3 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 5.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 3 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 4.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 2 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 3.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 2 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 2.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 1 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
                if (p.getHealth() == 1.0){
                    p.sendMessage("HP:" + ChatColor.RED + " 1 " + ChatColor.BLACK + "/" + ChatColor.DARK_GREEN + " 10"  );
                }
            }
        return false;
    }
}
Во-первых, если Вы используете множественные условия, которые по логике вещей не могут выполняться несколько сразу, то следует использовать конструкцию не if...{}if...{}, а if...{}else if...{}else if...{}.
Во-вторых, если происходит множественная проверка на равенство, то лучше использовать switch, код проще читать будет.
В-третьих можно переводить из числа в строку следующим способом: String.valueof(переменная).
В-четвёртых, что вы будете делать, если здоровье будет 3.7? А 4.2? Ипользовать стоит пределы от и до, например.
На счёт того, что над головой -- в смысле над головой? Вместо ника -- вам в сторону кастомной отправки пакетов. Над ником -- это мод или извращение с "галограммами" так называемыми. Под ником -- курите scoreboard.
 
В-четвёртых, что вы будете делать, если здоровье будет 3.7? А 4.2? Ипользовать стоит пределы от и до, например.
Оно не может таким быть, но я все же применю > и <.
На счёт того, что над головой -- в смысле над головой? Вместо ника -- вам в сторону кастомной отправки пакетов. Над ником -- это мод или извращение с "галограммами" так называемыми. Под ником -- курите scoreboard.
Всмысле?? ScoreBoard??
 
Оно не может таким быть, но я все же применю > и <.

Всмысле?? ScoreBoard??
С чего вы взяли, что здоровье не может быть дробным? Если восстанавливать например по 0.5 здоровья игроку, то каждый второй раз у игрока будет прибавляться по половинке сердечка.
 
HealthBarCover.png
Вот так вот
Как в первом плане 10 Health Мне вот так надо. Не подскажите ?
 
Ну и удалил всё, что не требуется.
Java:
package fyuz.plugin.events;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
//Missing import: StringBuilder 

public class MainClass extends JavaPlugin {

    public boolean checkSender(CommandSender sender) {
        return !(sender instanceof Player);
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
            if (checkSender(sender)){
                sender.sendMessage("You are not player!");
                return true;
            }
            Player p = (Player) sender;
            StringBuilder sb = new StringBuilder();
            sb.append("HP: ");
            if (p.getHealth() >= 13.0){
                sb.append(ChatColor.DARK_GREEN.toString());
            } else if (p.getHealth() >= 7.0){
                sb.append(ChatColor.YELLOW.toString());
            } else {
                sb.append(ChatColor.RED.toString());
            }
           sb.append((int) (p.getHealth() / 2)).append(ChatColor.BLACK.toString());
           sb.append(" / ").append(ChatColor.DARK_GREEN.toString()).append(10);
           p.sendMessage(sb.toString());
           return true;
    }
}
 

Поделиться этой страницей

Назад
Верх