Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем FyuzYT, 8 янв 2016.

  1. Автор темы
    FyuzYT

    FyuzYT Активный участник Пользователь

    Баллы:
    66
    Skype:
    salmantonggi
    Имя в Minecraft:
    FyuzYT
    Здравствуйте, вот я решил сделать плагин 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;
        }
    }
    
     
    Последнее редактирование: 8 янв 2016
  2. Хостинг MineCraft
    <
  3. Agravaine

    Agravaine Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25
    Боже, ну говнокод...
     
  4. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Во-первых, если Вы используете множественные условия, которые по логике вещей не могут выполняться несколько сразу, то следует использовать конструкцию не if...{}if...{}, а if...{}else if...{}else if...{}.
    Во-вторых, если происходит множественная проверка на равенство, то лучше использовать switch, код проще читать будет.
    В-третьих можно переводить из числа в строку следующим способом: String.valueof(переменная).
    В-четвёртых, что вы будете делать, если здоровье будет 3.7? А 4.2? Ипользовать стоит пределы от и до, например.
    На счёт того, что над головой -- в смысле над головой? Вместо ника -- вам в сторону кастомной отправки пакетов. Над ником -- это мод или извращение с "галограммами" так называемыми. Под ником -- курите scoreboard.
     
  5. Автор темы
    FyuzYT

    FyuzYT Активный участник Пользователь

    Баллы:
    66
    Skype:
    salmantonggi
    Имя в Minecraft:
    FyuzYT
    Оно не может таким быть, но я все же применю > и <.
    Всмысле?? ScoreBoard??
     
  6. Patik1

    Patik1 Активный участник Пользователь

    Баллы:
    63
    Имя в Minecraft:
    Patik1
    minecraft.gamepedia.com/Scoreboard
     
  7. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    С чего вы взяли, что здоровье не может быть дробным? Если восстанавливать например по 0.5 здоровья игроку, то каждый второй раз у игрока будет прибавляться по половинке сердечка.
     
  8. Автор темы
    FyuzYT

    FyuzYT Активный участник Пользователь

    Баллы:
    66
    Skype:
    salmantonggi
    Имя в Minecraft:
    FyuzYT
    [​IMG] Вот так вот[DOUBLEPOST=1452344295,1452344254][/DOUBLEPOST]Как в первом плане 10 Health Мне вот так надо. Не подскажите ?
     
  9. LomNar

    LomNar Активный участник Пользователь

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Мда. Лучшеб че дельное написал
     
  10. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну и удалил всё, что не требуется.
    Код:
    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;
        }
    }
    
     

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