package moe.oko.opennaw.util; import moe.oko.opennaw.OpenNAW; import moe.oko.opennaw.model.action.Action; import moe.oko.opennaw.model.action.CityAttackAction; import org.bukkit.Bukkit; import java.util.HashMap; import java.util.UUID; public class ActionLogger { HashMap actionByUuid = new HashMap<>(); public ActionLogger() { } public boolean tryAction(Action action) { if(action instanceof CityAttackAction) { //City attack logic if(enoughTimeElapsed(action.timeOfAction, CityAttackAction.DELAY)) { CityAttackAction CAA = (CityAttackAction) action; if (actionByUuid.containsKey(CAA.getPlayer().getUniqueId())) { actionByUuid.remove(CAA.getPlayer().getUniqueId()); } actionByUuid.put(CAA.getPlayer().getUniqueId(), action); Bukkit.getScheduler().scheduleSyncDelayedTask(OpenNAW.getInstance(), () -> { var actionCallback = actionByUuid.get(CAA.getPlayer().getUniqueId()); if (!actionCallback.isCancelled()) { CAA.completion(); } actionByUuid.remove(CAA.getPlayer().getUniqueId()); }, CityAttackAction.DELAY); return true; } return false; } return false; } private boolean enoughTimeElapsed(long timestamp, long delay) { return (System.currentTimeMillis() - timestamp) > delay; } }