From ae9d57e6ed31f60ee0702e95ce284c65e98e9df6 Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Mon, 27 Apr 2015 18:29:09 -0700 Subject: [PATCH] Added per-defender /siege cooldown. 15 minutes to rebuild, log out, relocate, etc. --- src/me/ryanhamshire/GriefPrevention/DataStore.java | 12 ++++++++++++ src/me/ryanhamshire/GriefPrevention/PlayerData.java | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/me/ryanhamshire/GriefPrevention/DataStore.java b/src/me/ryanhamshire/GriefPrevention/DataStore.java index 664416a..dcd186e 100644 --- a/src/me/ryanhamshire/GriefPrevention/DataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/DataStore.java @@ -849,6 +849,7 @@ public abstract class DataStore PlayerData defenderData = this.getPlayerData(siegeData.defender.getUniqueId()); defenderData.siegeData = null; + defenderData.lastSiegeEndTimeStamp = System.currentTimeMillis(); //start a cooldown for this attacker/defender pair Long now = Calendar.getInstance().getTimeInMillis(); @@ -946,6 +947,17 @@ public abstract class DataStore this.siegeCooldownRemaining.remove(attacker.getName() + "_" + defender.getName()); } + //look for genderal defender cooldown + PlayerData defenderData = this.getPlayerData(defender.getUniqueId()); + if(defenderData.lastSiegeEndTimeStamp > 0) + { + long now = System.currentTimeMillis(); + if(now - defenderData.lastSiegeEndTimeStamp > 1000 * 60 * 15) //15 minutes in milliseconds + { + return true; + } + } + //look for an attacker/claim cooldown if(cooldownEnd == null && this.siegeCooldownRemaining.get(attacker.getName() + "_" + defenderClaim.getOwnerName()) != null) { diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerData.java b/src/me/ryanhamshire/GriefPrevention/PlayerData.java index aa99a6c..e067df3 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerData.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerData.java @@ -79,6 +79,9 @@ public class PlayerData //timestamp of last death, for use in preventing death message spam long lastDeathTimeStamp = 0; + //timestamp when last siege ended (where this player was the defender) + long lastSiegeEndTimeStamp = 0; + //whether the player was kicked (set and used during logout) boolean wasKicked = false;