package me.avery246813579.hotpotato.game; import me.avery246813579.hotpotato.HotPotato; import org.bukkit.Bukkit; public abstract class GameTimer implements Runnable{ /** Variables **/ private GameManager gameManager; public int timeLeft, timeState; public GameTimer(GameManager game, int time){ gameManager = game; timeLeft = time; timeState = Bukkit.getScheduler().scheduleSyncRepeatingTask(HotPotato.getPlugin(), this, 20L, 20L); } @Override public void run() { if(gameManager.isForceStop()){ Bukkit.getScheduler().cancelTask(timeState); return; } if(timeLeft != 0){ onRunnableTick(timeLeft); timeLeft--; }else{ onScheduleEnd(timeState); } } protected abstract void onScheduleEnd(int timeState); protected abstract void onRunnableTick(int timeLeft); public GameManager getGameManager() { return gameManager; } public void setGameManager(GameManager gameManager) { this.gameManager = gameManager; } }