44 lines
1.5 KiB
Java
44 lines
1.5 KiB
Java
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<UUID, Action> 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;
|
|
}
|
|
}
|