- 4,167
- 68
- 693
Здравствуйте всем )
Надеюсь, меня не побьют за такие вопросы, но я не могу прописать адекватно работающий таймер...
Ситуация следующая: есть блок, при касании которого медленно повышается здоровье.
Код следующий:
Всё просто и понятно и даже работает, здоровье медленно прибавляется. Однако, если игрок стоит одновременно на нескольких таких блоках, то каждый из них прибавляет единицу к таймеру и исцеление в разы ускоряется...
Как мне этого избежать? Другая конструкция таймера? Опять, же эвенты?
И ещё, по этому же эффекту... В определённые моменты увеличение здоровья как будто бы не срабатывает и откатывается на пол сердечка назад. Из-за чего такое может происходить? Подозреваю, что тут нужна проверка на сервер.
Спасибо )
Надеюсь, меня не побьют за такие вопросы, но я не могу прописать адекватно работающий таймер...
Ситуация следующая: есть блок, при касании которого медленно повышается здоровье.
Код следующий:
Код:
private static int tick = 0;
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
{
if (entity instanceof EntityPlayer) {
if (player.getHealth() < player.getMaxHealth() && player.getHealth() > 1)
{
tick += 1;
if (tick > 900)
{
tick = 0; player.setHealth(player.getHealth() + 1);
}
}
}
}
Всё просто и понятно и даже работает, здоровье медленно прибавляется. Однако, если игрок стоит одновременно на нескольких таких блоках, то каждый из них прибавляет единицу к таймеру и исцеление в разы ускоряется...
Как мне этого избежать? Другая конструкция таймера? Опять, же эвенты?
И ещё, по этому же эффекту... В определённые моменты увеличение здоровья как будто бы не срабатывает и откатывается на пол сердечка назад. Из-за чего такое может происходить? Подозреваю, что тут нужна проверка на сервер.
Спасибо )