Use proper functions where they exist, and move functions to better locations.

This commit is contained in:
GJ 2013-10-28 15:12:24 -04:00
parent 8369ae4616
commit c79f8043ad
9 changed files with 28 additions and 39 deletions

View File

@ -8,13 +8,12 @@ import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.commands.CommandUtils;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager; import com.gmail.nossr50.util.scoreboards.ScoreboardManager;
import com.gmail.nossr50.util.skills.SkillUtils;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
public class MccooldownCommand implements TabExecutor { public class MccooldownCommand implements TabExecutor {
@ -36,7 +35,7 @@ public class MccooldownCommand implements TabExecutor {
} }
} }
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
player.sendMessage(LocaleLoader.getString("Commands.Cooldowns.Header")); player.sendMessage(LocaleLoader.getString("Commands.Cooldowns.Header"));
player.sendMessage(LocaleLoader.getString("mcMMO.NoSkillNote")); player.sendMessage(LocaleLoader.getString("mcMMO.NoSkillNote"));
@ -46,7 +45,7 @@ public class MccooldownCommand implements TabExecutor {
continue; continue;
} }
int seconds = SkillUtils.calculateTimeLeft(ability, profile, player); int seconds = mcMMOPlayer.calculateTimeRemaining(ability);
if (seconds <= 0) { if (seconds <= 0) {
player.sendMessage(LocaleLoader.getString("Commands.Cooldowns.Row.Y", ability.getName())); player.sendMessage(LocaleLoader.getString("Commands.Cooldowns.Row.Y", ability.getName()));

View File

@ -854,7 +854,7 @@ public class McMMOPlayer {
return; return;
} }
int timeRemaining = SkillUtils.calculateTimeLeft(ability, profile, player); int timeRemaining = calculateTimeRemaining(ability);
if (timeRemaining > 0) { if (timeRemaining > 0) {
/* /*
@ -924,7 +924,7 @@ public class McMMOPlayer {
*/ */
if (ability.getPermissions(player) && tool.inHand(inHand) && !getToolPreparationMode(tool)) { if (ability.getPermissions(player) && tool.inHand(inHand) && !getToolPreparationMode(tool)) {
if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) { if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) {
int timeRemaining = SkillUtils.calculateTimeLeft(ability, profile, player); int timeRemaining = calculateTimeRemaining(ability);
if (!getAbilityMode(ability) && timeRemaining > 0) { if (!getAbilityMode(ability) && timeRemaining > 0) {
player.sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining)); player.sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining));
@ -941,4 +941,16 @@ public class McMMOPlayer {
new ToolLowerTask(this, tool).runTaskLaterAsynchronously(mcMMO.p, 4 * Misc.TICK_CONVERSION_FACTOR); new ToolLowerTask(this, tool).runTaskLaterAsynchronously(mcMMO.p, 4 * Misc.TICK_CONVERSION_FACTOR);
} }
} }
/**
* Calculate the time remaining until the ability's cooldown expires.
*
* @param ability AbilityType whose cooldown to check
*
* @return the number of seconds remaining before the cooldown expires
*/
public int calculateTimeRemaining(AbilityType ability) {
long deactivatedTimestamp = profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR;
return (int) (((deactivatedTimestamp + (PerksUtils.handleCooldownPerks(player, ability.getCooldown()) * Misc.TIME_CONVERSION_FACTOR)) - System.currentTimeMillis()) / Misc.TIME_CONVERSION_FACTOR);
}
} }

View File

@ -151,7 +151,7 @@ public class PlayerProfile {
* Xp Functions * Xp Functions
*/ */
public int getSkillLevel(SkillType skillType) { protected int getSkillLevel(SkillType skillType) {
return skillType.isChildSkill() ? getChildSkillLevel(skillType) : skills.get(skillType); return skillType.isChildSkill() ? getChildSkillLevel(skillType) : skills.get(skillType);
} }

View File

@ -104,7 +104,7 @@ public class AxesManager extends SkillManager {
short maxDurability = mcMMO.getRepairableManager().isRepairable(armorType) ? mcMMO.getRepairableManager().getRepairable(armorType).getMaximumDurability() : armorType.getMaxDurability(); short maxDurability = mcMMO.getRepairableManager().isRepairable(armorType) ? mcMMO.getRepairableManager().getRepairable(armorType).getMaximumDurability() : armorType.getMaxDurability();
double maxDurabilityDamage = maxDurability * Axes.impactMaxDurabilityModifier; double maxDurabilityDamage = maxDurability * Axes.impactMaxDurabilityModifier;
armor.setDurability((short) (Math.min(modifiedDurabilityDamage, maxDurabilityDamage) + armor.getDurability())); SkillUtils.handleDurabilityChange(armor, (int) Math.min(modifiedDurabilityDamage, maxDurabilityDamage));
} }
} }
} }

View File

@ -472,7 +472,6 @@ public class FishingManager extends SkillManager {
} }
ItemStack treasureDrop = treasure.getDrop(); ItemStack treasureDrop = treasure.getDrop();
short maxDurability = treasureDrop.getType().getMaxDurability(); short maxDurability = treasureDrop.getType().getMaxDurability();
if (maxDurability > 0) { if (maxDurability > 0) {

View File

@ -14,7 +14,6 @@ import org.bukkit.metadata.FixedMetadataValue;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; 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.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
@ -286,12 +285,10 @@ public class MiningManager extends SkillManager {
} }
private boolean blastMiningCooldownOver() { private boolean blastMiningCooldownOver() {
Player player = getPlayer(); int timeRemaining = mcMMOPlayer.calculateTimeRemaining(AbilityType.BLAST_MINING);
PlayerProfile profile = getProfile();
int timeRemaining = SkillUtils.calculateTimeLeft(AbilityType.BLAST_MINING, profile, player);
if (timeRemaining > 0) { if (timeRemaining > 0) {
player.sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining)); getPlayer().sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining));
return false; return false;
} }

View File

@ -19,6 +19,7 @@ import com.gmail.nossr50.config.experience.ExperienceConfig;
import com.gmail.nossr50.util.BlockUtils; import com.gmail.nossr50.util.BlockUtils;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.ModUtils; import com.gmail.nossr50.util.ModUtils;
import com.gmail.nossr50.util.skills.SkillUtils;
public final class Woodcutting { public final class Woodcutting {
public static int doubleDropsMaxLevel = AdvancedConfig.getInstance().getWoodcuttingDoubleDropMaxLevel(); public static int doubleDropsMaxLevel = AdvancedConfig.getInstance().getWoodcuttingDoubleDropMaxLevel();
@ -227,12 +228,8 @@ public final class Woodcutting {
} }
} }
short finalDurability = (short) (inHand.getDurability() + durabilityLoss); SkillUtils.handleDurabilityChange(inHand, durabilityLoss);
short maxDurability = inHandMaterial.getMaxDurability(); return (inHand.getDurability() < inHandMaterial.getMaxDurability());
boolean overMax = (finalDurability >= maxDurability);
inHand.setDurability(overMax ? maxDurability : finalDurability);
return !overMax;
} }
/** /**

View File

@ -25,7 +25,6 @@ import com.gmail.nossr50.skills.child.FamilyTree;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.scoreboards.ScoreboardManager.SidebarType; import com.gmail.nossr50.util.scoreboards.ScoreboardManager.SidebarType;
import com.gmail.nossr50.util.skills.SkillUtils;
public class ScoreboardWrapper { public class ScoreboardWrapper {
@ -427,8 +426,8 @@ public class ScoreboardWrapper {
// Special-Case: Mining has two abilities, both with cooldowns // Special-Case: Mining has two abilities, both with cooldowns
Score cooldownSB = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(AbilityType.SUPER_BREAKER)); Score cooldownSB = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(AbilityType.SUPER_BREAKER));
Score cooldownBM = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(AbilityType.BLAST_MINING)); Score cooldownBM = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(AbilityType.BLAST_MINING));
int secondsSB = Math.max(SkillUtils.calculateTimeLeft(AbilityType.SUPER_BREAKER, profile, player), 0); int secondsSB = Math.max(mcMMOPlayer.calculateTimeRemaining(AbilityType.SUPER_BREAKER), 0);
int secondsBM = Math.max(SkillUtils.calculateTimeLeft(AbilityType.BLAST_MINING, profile, player), 0); int secondsBM = Math.max(mcMMOPlayer.calculateTimeRemaining(AbilityType.BLAST_MINING), 0);
cooldownSB.setScore(secondsSB); cooldownSB.setScore(secondsSB);
cooldownBM.setScore(secondsBM); cooldownBM.setScore(secondsBM);
@ -438,7 +437,7 @@ public class ScoreboardWrapper {
else { else {
AbilityType ability = targetSkill.getAbility(); AbilityType ability = targetSkill.getAbility();
Score cooldown = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(ability)); Score cooldown = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(ability));
int seconds = Math.max(SkillUtils.calculateTimeLeft(ability, profile, player), 0); int seconds = Math.max(mcMMOPlayer.calculateTimeRemaining(ability), 0);
cooldown.setScore(seconds); cooldown.setScore(seconds);
@ -458,7 +457,7 @@ public class ScoreboardWrapper {
boolean anyCooldownsActive = false; boolean anyCooldownsActive = false;
for (AbilityType ability : AbilityType.NORMAL_ABILITIES) { for (AbilityType ability : AbilityType.NORMAL_ABILITIES) {
int seconds = Math.max(SkillUtils.calculateTimeLeft(ability, profile, player), 0); int seconds = Math.max(mcMMOPlayer.calculateTimeRemaining(ability), 0);
if (seconds != 0) { if (seconds != 0) {
anyCooldownsActive = true; anyCooldownsActive = true;

View File

@ -16,7 +16,6 @@ import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.config.HiddenConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; 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.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
@ -54,19 +53,6 @@ public class SkillUtils {
return (int) (((deactivatedTimeStamp + (PerksUtils.handleCooldownPerks(player, cooldown) * Misc.TIME_CONVERSION_FACTOR)) - System.currentTimeMillis()) / Misc.TIME_CONVERSION_FACTOR); 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. * Check if the cooldown has expired.
* This does NOT account for cooldown perks! * This does NOT account for cooldown perks!