1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

(Решено)Не хилит хп после перезахода

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

Статус темы:
Закрыта.
  1. Автор темы
    reZero

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

    Баллы:
    76
    Если игроку до конца не восстановилось здоровье, я добавляю его в файл и при входе проверяю, если в файле есть игрок, тогда ставлю игроку снова 1 хп и опять запускаю таймер в котором восстанавливаю хп. Все работает, но если игрок перезаходит несколько раз, тогда хп хилиться примерно до середины и таймер останавливается, а также игрок удаляется их файла. (такое должно быть только в случает полного регена). В чем проблема?
    PHP:
    @SuppressWarnings("deprecation")
        @
    EventHandler
        
    public void onJoin(PlayerJoinEvent e)
        {
            
    Player p e.getPlayer();
            if(
    Utils.chekPlayer(p))
            {
                
    p.setHealth(1);
                
    p.setHealthScale(1);
                
    p.teleport(new Location(p.getWorld(), main.getConfig().getDouble("settings.hospital.X"), main.getConfig().getDouble("settings.hospital.Y"), main.getConfig().getDouble("settings.hospital.Z"), main.getConfig().getInt("settings.hospital.YAW"), main.getConfig().getInt("settings.hospital.PITCH")));                                                   
                
    task Bukkit.getScheduler().runTaskTimer(main, ()->
                {
                    if(
    Utils.chekPlayer(p))
                    {
                        if(
    p.getHealth() >= p.getMaxHealth() && p.getHealthScale() >= p.getHealth())
                        {
                            
    p.teleport(new Location(p.getWorld(), main.getConfig().getDouble("settings.hospitalNear.X"), main.getConfig().getDouble("settings.hospitalNear.Y"), main.getConfig().getDouble("settings.hospitalNear.Z"), main.getConfig().getInt("settings.hospitalNear.YAW"), main.getConfig().getInt("settings.hospitalNear.PITCH")));
                            
    Utils.removePlayer(p);
                             
    task.cancel();
                        }
                        else
                        {
                            
    p.setHealth(p.getHealth() + 1);
                            
    p.setHealthScale(p.getHealthScale() + 1);
                        }
                    }
                }, 
    020*main.getConfig().getInt("settings.count"));   
            }
     
  2. Автор темы
    reZero

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

    Баллы:
    76
    Может кто помочь?
     
  3. bristol

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

    Баллы:
    46
    Ну вообще, лучше проверять присутствие игрока по его имени. Попробуй, может заработает.
    Код:
        public boolean checkPlayer(String name) {
            for(Player p : Bukkit.getOnlinePlayers()) {
                if(p.getName().equals(name)) return true;
            }
            return false;
        }
     
    Последнее редактирование: 23 апр 2018
  4. Автор темы
    reZero

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

    Баллы:
    76
    Не уверен что этот метод проверки лучше.
    Проблему я исправил самостоятельно.
    Все равно спасибо!
     
Статус темы:
Закрыта.

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