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

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

Discussion in 'Разработка плагинов для новичков' started by FyuzYT, Jan 8, 2016.

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

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

    Trophy Points:
    66
    Skype:
    salmantonggi
    Имя в Minecraft:
    FyuzYT
    Здравствуйте, вот я решил сделать плагин HealthBar.
    И я незнаю как вывести этот текст над головой..
    Помогите, заранее спасибо.

    P.S. Сделал это дело по команде "/hp". Выводит по 10 бальной шкале. Пример:HP: 9 / 10
    Source:
    Code:
    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;
        }
    }
    
     
    Last edited: Jan 8, 2016
  2. Хостинг MineCraft
    <
  3. Agravaine

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

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

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

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

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

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

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

    Trophy Points:
    63
    Имя в Minecraft:
    Patik1
    minecraft.gamepedia.com/Scoreboard
     
  7. Ission

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

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

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

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

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

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

    Dereku Старожил

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

Share This Page