From c6ca65f5c91f0d045083a431c4277eb5739549f1 Mon Sep 17 00:00:00 2001 From: riking Date: Sat, 19 Oct 2013 15:59:58 -0700 Subject: [PATCH] Create a utility method in SkillUtils to easily check ability cooldowns --- .../nossr50/datatypes/player/McMMOPlayer.java | 4 ++-- .../nossr50/listeners/ScoreboardsListener.java | 2 +- .../gmail/nossr50/skills/mining/MiningManager.java | 2 +- .../util/scoreboards/ScoreboardWrapper.java | 8 ++++---- .../com/gmail/nossr50/util/skills/SkillUtils.java | 14 ++++++++++++++ 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java index ddbd8407e..37e4939c4 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -854,7 +854,7 @@ public class McMMOPlayer { return; } - int timeRemaining = SkillUtils.calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player); + int timeRemaining = SkillUtils.calculateTimeLeft(ability, profile, player); if (timeRemaining > 0) { /* @@ -924,7 +924,7 @@ public class McMMOPlayer { */ if (ability.getPermissions(player) && tool.inHand(inHand) && !getToolPreparationMode(tool)) { if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) { - int timeRemaining = SkillUtils.calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player); + int timeRemaining = SkillUtils.calculateTimeLeft(ability, profile, player); if (!getAbilityMode(ability) && timeRemaining > 0) { player.sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining)); diff --git a/src/main/java/com/gmail/nossr50/listeners/ScoreboardsListener.java b/src/main/java/com/gmail/nossr50/listeners/ScoreboardsListener.java index cc84494d1..12aa2305b 100644 --- a/src/main/java/com/gmail/nossr50/listeners/ScoreboardsListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/ScoreboardsListener.java @@ -44,6 +44,6 @@ public class ScoreboardsListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onAbility(McMMOPlayerAbilityActivateEvent e) { - ScoreboardManager.cooldownUpdate(e.getPlayer(), e.getSkill(), SkillUtils.calculateTimeLeft(UserManager.getPlayer(e.getPlayer()).getProfile().getSkillDATS(e.getAbility()) * Misc.TIME_CONVERSION_FACTOR, e.getAbility().getCooldown(), e.getPlayer())); + ScoreboardManager.cooldownUpdate(e.getPlayer(), e.getSkill(), SkillUtils.calculateTimeLeft(e.getAbility(), UserManager.getPlayer(e.getPlayer()).getProfile(), e.getPlayer())); } } diff --git a/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java b/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java index d0e759467..32b27bf77 100644 --- a/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java +++ b/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java @@ -288,7 +288,7 @@ public class MiningManager extends SkillManager { private boolean blastMiningCooldownOver() { Player player = getPlayer(); PlayerProfile profile = getProfile(); - int timeRemaining = SkillUtils.calculateTimeLeft(profile.getSkillDATS(AbilityType.BLAST_MINING) * Misc.TIME_CONVERSION_FACTOR, AbilityType.BLAST_MINING.getCooldown(), player); + int timeRemaining = SkillUtils.calculateTimeLeft(AbilityType.BLAST_MINING, profile, player); if (timeRemaining > 0) { player.sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining)); diff --git a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java index ded2fd1fd..bac00be94 100644 --- a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java +++ b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java @@ -415,7 +415,7 @@ public class ScoreboardWrapper { if (targetSkill != SkillType.MINING) { AbilityType ab = targetSkill.getAbility(); Score cooldown = sidebarObj.getScore(ScoreboardManager.abilityLabelsSkill.get(ab)); - int seconds = SkillUtils.calculateTimeLeft(profile.getSkillDATS(ab) * Misc.TIME_CONVERSION_FACTOR, ab.getCooldown(), bukkitPlayer); + int seconds = SkillUtils.calculateTimeLeft(ab, profile, bukkitPlayer); seconds = (seconds <= 0) ? 0 : seconds; if (seconds == 0) { cooldown.setScore(0); @@ -431,8 +431,8 @@ public class ScoreboardWrapper { AbilityType bm = AbilityType.BLAST_MINING; Score cooldownSB = sidebarObj.getScore(ScoreboardManager.abilityLabelsSkill.get(sb)); Score cooldownBM = sidebarObj.getScore(ScoreboardManager.abilityLabelsSkill.get(bm)); - int secondsSB = SkillUtils.calculateTimeLeft(profile.getSkillDATS(sb) * Misc.TIME_CONVERSION_FACTOR, sb.getCooldown(), bukkitPlayer); - int secondsBM = SkillUtils.calculateTimeLeft(profile.getSkillDATS(bm) * Misc.TIME_CONVERSION_FACTOR, bm.getCooldown(), bukkitPlayer); + int secondsSB = SkillUtils.calculateTimeLeft(sb, profile, bukkitPlayer); + int secondsBM = SkillUtils.calculateTimeLeft(bm, profile, bukkitPlayer); secondsSB = (secondsSB <= 0) ? 0 : secondsSB; secondsBM = (secondsBM <= 0) ? 0 : secondsBM; if (secondsSB == 0 && secondsBM == 0) { @@ -452,7 +452,7 @@ public class ScoreboardWrapper { case COOLDOWNS_BOARD: boolean anyCooldownsActive = false; for (AbilityType ability : AbilityType.NORMAL_ABILITIES) { - int seconds = SkillUtils.calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), bukkitPlayer); + int seconds = SkillUtils.calculateTimeLeft(ability, profile, bukkitPlayer); seconds = (seconds <= 0) ? 0 : seconds; if (seconds != 0) { anyCooldownsActive = true; diff --git a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java index d8aa46a48..ea16cb67e 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java @@ -16,6 +16,7 @@ import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; @@ -53,6 +54,19 @@ public class SkillUtils { return (int) (((deactivatedTimeStamp + (PerksUtils.handleCooldownPerks(player, cooldown) * Misc.TIME_CONVERSION_FACTOR)) - System.currentTimeMillis()) / Misc.TIME_CONVERSION_FACTOR); } + /** + * Calculate the time remaining until the ability's cooldown expires. + * + * @param ability AbilityType whose cooldown to check + * @param profile The PlayerProfile to get the cooldown from + * @param player The Player to check for cooldown perks + * + * @return the number of seconds remaining before the cooldown expires + */ + public static int calculateTimeLeft(AbilityType ability, PlayerProfile profile, Player player) { + return calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player); + } + /** * Check if the cooldown has expired. * This does NOT account for cooldown perks!