- Баллы
- 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);
}
}
}, 0, 20*main.getConfig().getInt("settings.count"));
}