- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
Плавное замедление Runnable в плагине Майнкрафт
Я пишу плагин для игры Майнкрафт на казино рулетку. Рулетка должна крутиться в течение указанных секунд. По мере истечения времени рулетка должна постепенно замедляться, пока совсем не остановится. Я написал небольшую логику, но она работает не так как надо (рулетка не замедляется). Как это можно сделать?
private static void startRoulette(Player player) {
if (isSpinning.getOrDefault(player, false)) return;
final Inventory inventory = activeRoulettes.get(player);
final int totalDuration = Main.getInstance().getConfig().getInt("settings.roulette.time") * 40;
isSpinning.put(player, true);
new BukkitRunnable() {
int elapsedTicks = 0;
int delay = 2;
@Override
public void run() {
if (!isSpinning.getOrDefault(player, false)) {
this.cancel();
return;
}
for (int i = 0; i < 5; i++) {
inventory.setItem(i, getRandomMultiplierItem());
}
elapsedTicks += delay;
float progress = (float) elapsedTicks / totalDuration;
delay = 2 + (int) (10 * progress);
if (elapsedTicks >= totalDuration) {
stopRoulette(player, inventory);
this.cancel();
}
}
}.runTaskTimer(Main.getInstance(), 0L, 2L);
}