выполнение действий через определённое время

Версия Minecraft
1.7.10
Делаю небольшой эффект (potion), не подскажите как сделать так, что бы действие выполнилось секунд через десять??? например через 10 секунд после получения этого эффекта игрок взлетает e.entityLiving.motionY = 10.5F;. Буду благодарен за помощь
 
Решение
У тебя в PotionEffect есть duration. Он декрементиться каждый тип. В тике 20 секунде. Следовательно...

Java:
if (potionEffect.getDuration() % 200 == 0)
    doSomething(); // Срабаывает каждые 10 сек

Если нужно чтобы эфект сработал единожды, но после 10 сек, то...

Java:
if (potionEffect.getDuration() == potionEffect.getMaxDuration() - 200)
    doSomething();
1,159
38
544
У тебя в PotionEffect есть duration. Он декрементиться каждый тип. В тике 20 секунде. Следовательно...

Java:
if (potionEffect.getDuration() % 200 == 0)
    doSomething(); // Срабаывает каждые 10 сек

Если нужно чтобы эфект сработал единожды, но после 10 сек, то...

Java:
if (potionEffect.getDuration() == potionEffect.getMaxDuration() - 200)
    doSomething();
 
3,005
192
592
1,159
38
544
Но, если игроку дадут эффект на 1 секунду, то что?
И правильно что ничего не выполнится. Потому что какая логика в том чтобы давать эффект зелья спустя 10 сек, но сам эффект давать на 1 сек?

Ну а если очень хочется, я бы решил эту задачу таймертаском (т.к. мне сейчас лень выдумывать лучшее решение)
 
1,159
38
544
7,099
324
1,510
if ((potionEffect.getDuration() - 1) % 200 == 0) doSomething(); - сработает хотя бы один раз всегда
 
Сверху