diff --git a/src/main/java/com/gmail/nossr50/api/AbilityAPI.java b/src/main/java/com/gmail/nossr50/api/AbilityAPI.java index 8aa59f202..3c98e4845 100644 --- a/src/main/java/com/gmail/nossr50/api/AbilityAPI.java +++ b/src/main/java/com/gmail/nossr50/api/AbilityAPI.java @@ -11,34 +11,90 @@ import com.gmail.nossr50.util.player.UserManager; public final class AbilityAPI { private AbilityAPI() {} + /** + * Checks if the ability "Berserk" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Berserk" is active + */ public static boolean berserkEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.BERSERK); } + /** + * Checks if the ability "Giga Drill Breaker" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Giga Drill Breaker" is active + */ public static boolean gigaDrillBreakerEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.GIGA_DRILL_BREAKER); } + /** + * Checks if the ability "Green Terra" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Green Terra" is active + */ public static boolean greenTerraEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.GREEN_TERRA); } + /** + * Checks if the ability "Serrated Strikes" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Serrated Strikes" is active + */ public static boolean serratedStrikesEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.SERRATED_STRIKES); } + /** + * Checks if the ability "Skull Splitter" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Skull Splitter" is active + */ public static boolean skullSplitterEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.SKULL_SPLITTER); } + /** + * Checks if the ability "Super Breaker" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Super Breaker" is active + */ public static boolean superBreakerEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.SUPER_BREAKER); } + /** + * Checks if the ability "Tree Feller" is active. + * + * @param player The {@link Player} to check + * + * @return true if "Tree Feller" is active + */ public static boolean treeFellerEnabled(Player player) { return UserManager.getPlayer(player).getAbilityMode(AbilityType.TREE_FELLER); } + /** + * Checks if any ability is active. + * + * @param player The {@link Player} to check + * + * @return true if any ability is active + */ public static boolean isAnyAbilityEnabled(Player player) { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); @@ -51,34 +107,81 @@ public final class AbilityAPI { return false; } + /** + * Reset the ability cooldowns for a player + * + * @param player The {@link Player} to reset the cooldowns for + */ public static void resetCooldowns(Player player) { UserManager.getPlayer(player).resetCooldowns(); } + /** + * Set the cooldown for the "Berserk" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setBerserkCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.BERSERK, cooldown); } + /** + * Set the cooldown for the "Giga Drill Breaker" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setGigaDrillBreakerCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.GIGA_DRILL_BREAKER, cooldown); } + /** + * Set the cooldown for the "Green Terra" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setGreenTerraCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.GREEN_TERRA, cooldown); } + /** + * Set the cooldown for the "Serrated Strikes" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setSerratedStrikesCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.SERRATED_STRIKES, cooldown); } + /** + * Set the cooldown for the "Skull Splitter" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setSkullSplitterCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.SKULL_SPLITTER, cooldown); } + /** + * Set the cooldown for the "Super Breaker" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setSuperBreakerCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.SUPER_BREAKER, cooldown); } + /** + * Set the cooldown for the "Tree Feller" ability + * + * @param player The {@link Player} to set the cooldown for + * @param cooldown The cooldown length to set + */ public static void setTreeFellerCooldown(Player player, long cooldown) { UserManager.getPlayer(player).setAbilityDATS(AbilityType.TREE_FELLER, cooldown); } diff --git a/src/main/java/com/gmail/nossr50/database/DatabaseManager.java b/src/main/java/com/gmail/nossr50/database/DatabaseManager.java index 12e42c3b1..d3625fa13 100644 --- a/src/main/java/com/gmail/nossr50/database/DatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/DatabaseManager.java @@ -55,7 +55,7 @@ public interface DatabaseManager { /** * Retrieve rank info into a HashMap from SkillType to the rank. *

- * The special value null is used to represent the Power + * The special value {@code null} is used to represent the Power * Level rank (the combination of all skill levels). * * @param playerName The name of the user to retrieve the rankings for diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java index 8dd8454b5..18dde7881 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java @@ -85,30 +85,67 @@ public enum AbilityType { this.abilityPlayerOff = abilityPlayerOff; } + /** + * Get the cooldown time in seconds for this ability + * + * @return cooldown time in seconds + */ public int getCooldown() { return Config.getInstance().getCooldown(this); } + /** + * Get the maximum length in seconds for this ability + * + * @return maximum length in seconds + */ public int getMaxLength() { return Config.getInstance().getMaxLength(this); } + /** + * Get the locale string for when the ability activates + * + * @return localized activation message + */ public String getAbilityOn() { return LocaleLoader.getString(this.abilityOn); } + /** + * Get the locale string for when the ability deactivates + * + * @return localized deactivation message + */ public String getAbilityOff() { return LocaleLoader.getString(this.abilityOff); } + /** + * Get the locale string for nearby players when someone activates this ability + * + * @param player {@link Player} object that activates this ability + * @return localized activation message + */ public String getAbilityPlayer(Player player) { return LocaleLoader.getString(this.abilityPlayer, player.getName()); } + /** + * Get the locale string for nearby players when someone deactivates this ability + * + * @param player {@link Player} object that deactivates this ability + * @return localized deactivation message + */ public String getAbilityPlayerOff(Player player) { return LocaleLoader.getString(this.abilityPlayerOff, player.getName()); } + /** + * Get ability refresh message + * + * @return Localized ability refresh message + */ public String getAbilityRefresh() { return LocaleLoader.getString(this.abilityRefresh); } diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java index 792e4ed43..c312cb8aa 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/Acrobatics.java @@ -19,10 +19,26 @@ public final class Acrobatics { private Acrobatics() {}; + /** + * Calculates how much damage should be dealt when Dodging + * + * @param damage the base damage + * @param damageModifier the damage modifier + * + * @return modified damage + */ protected static double calculateModifiedDodgeDamage(double damage, double damageModifier) { return Math.max(damage / damageModifier, 1.0); } + /** + * Calculates how much damage should be dealt when Rolling + * + * @param damage the base damage + * @param damageThreshold the damage threshold + * + * @return modified damage + */ protected static double calculateModifiedRollDamage(double damage, double damageThreshold) { return Math.max(damage - damageThreshold, 0.0); } diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java index c8b4f7fd1..95b14125a 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java @@ -28,10 +28,22 @@ public class AcrobaticsManager extends SkillManager { super(mcMMOPlayer, SkillType.ACROBATICS); } + /** + * Check if the player is allowed to use Roll, + * checks permissions and exploit prevention. + * + * @return true if the player is allowed to use Roll + */ public boolean canRoll() { return !exploitPrevention() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.ROLL); } + /** + * Check if the player is allowed to use Dodge + * + * @param damager {@link Entity} that caused damage + * @return true if the player can Dodge damage from damager + */ public boolean canDodge(Entity damager) { if (Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.DODGE)) { if (damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled) { @@ -152,10 +164,23 @@ public class AcrobaticsManager extends SkillManager { return fallTries + 1 > maxTries; } + /** + * Check if a fall is fatal + * + * @param damage amount of damage taken from the fall + * @return true if the fall is fatal, false otherwise + */ private boolean isFatal(double damage) { return getPlayer().getHealth() - damage <= 0; } + /** + * Calculate the amount of XP gained from falling + * + * @param damage amount of damage taken in the fall + * @param isRoll boolean if the player was rolling + * @return amount of XP gained + */ private float calculateRollXP(double damage, boolean isRoll) { ItemStack boots = getPlayer().getInventory().getBoots(); float xp = (float) (damage * (isRoll ? Acrobatics.rollXpModifier : Acrobatics.fallXpModifier)); diff --git a/src/main/java/com/gmail/nossr50/skills/archery/Archery.java b/src/main/java/com/gmail/nossr50/skills/archery/Archery.java index aa1a19fd7..523035ddc 100644 --- a/src/main/java/com/gmail/nossr50/skills/archery/Archery.java +++ b/src/main/java/com/gmail/nossr50/skills/archery/Archery.java @@ -23,6 +23,12 @@ public class Archery { public static final double DISTANCE_XP_MULTIPLIER = 0.025; + /** + * Increment tracked arrow count for a LivingEntity, + * if the entity isn't tracked yet it will get added to the tracker. + * + * @param livingEntity the {@link LivingEntity} to increment the arrow count for + */ protected static void incrementTrackerValue(LivingEntity livingEntity) { for (TrackedEntity trackedEntity : trackedEntities) { if (trackedEntity.getLivingEntity().getEntityId() == livingEntity.getEntityId()) { @@ -34,6 +40,11 @@ public class Archery { addToTracker(livingEntity); // If the entity isn't tracked yet } + /** + * Add a LivingEntity to the tracker. + * + * @param livingEntity the {@link LivingEntity} to add. + */ protected static void addToTracker(LivingEntity livingEntity) { TrackedEntity trackedEntity = new TrackedEntity(livingEntity); @@ -41,6 +52,11 @@ public class Archery { trackedEntities.add(trackedEntity); } + /** + * Remove a TrackedEntity from the tracker. + * + * @param trackedEntity the {@link TrackedEntity} to remove. + */ protected static void removeFromTracker(TrackedEntity trackedEntity) { trackedEntities.remove(trackedEntity); } diff --git a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java index 9d60e4a49..56c58982d 100644 --- a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java +++ b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java @@ -23,14 +23,30 @@ public class ArcheryManager extends SkillManager { super(mcMMOPlayer, SkillType.ARCHERY); } + /** + * Check if the target can be dazed. Checks if target is valid and if the player has sufficient permissions. + * + * @param target the {@link LivingEntity} object of the target to check + * @return true if the target can be dazed, false otherwise + */ public boolean canDaze(LivingEntity target) { return target instanceof Player && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.DAZE); } + /** + * Check if the player can use SkillShot. + * + * @return true if the player can use SkillShot, false otherwise + */ public boolean canSkillShot() { return getSkillLevel() >= Archery.skillShotIncreaseLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.SKILL_SHOT); } + /** + * Check if the player can use RetrieveArrows. + * + * @return true if the player can use RetrieveArrows, false otherwise + */ public boolean canRetrieveArrows() { return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.RETRIEVE); } @@ -67,6 +83,8 @@ public class ArcheryManager extends SkillManager { * Handle the effects of the Daze ability * * @param defender The {@link Player} being affected by the ability + * + * @return amount of damage from Daze */ public double daze(Player defender) { if (!SkillUtils.activationSuccessful(SecondaryAbility.DAZE, getPlayer(), getSkillLevel(), activationChance)) { @@ -94,6 +112,7 @@ public class ArcheryManager extends SkillManager { * Handle the effects of the Skill Shot ability * * @param damage The amount of damage initially dealt by the event + * @return amount of damage from Skill Shot */ public double skillShot(double damage) { if (!SkillUtils.activationSuccessful(SecondaryAbility.SKILL_SHOT, getPlayer())) { diff --git a/src/main/java/com/gmail/nossr50/skills/axes/Axes.java b/src/main/java/com/gmail/nossr50/skills/axes/Axes.java index d64464ab1..7628cc2bd 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/Axes.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/Axes.java @@ -23,6 +23,12 @@ public class Axes { public static double skullSplitterModifier = AdvancedConfig.getInstance().getSkullSplitterModifier(); + /** + * Check if the target is wearing any armor. + * + * @param target the {@link LivingEntity} object of the target to check. + * @return true if the target is wearing at least one piece of armor, false otherwise + */ protected static boolean hasArmor(LivingEntity target) { for (ItemStack itemStack : target.getEquipment().getArmorContents()) { if (ItemUtils.isArmor(itemStack)) { diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index 070a06772..18a864e9d 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -159,6 +159,9 @@ public class RepairManager extends SkillManager { /** * Check if the player has tried to use an Anvil before. * + * @param anvilType The {@link Material} of the anvil block + * @param actualize determines if last anvil use should be actualized + * * @return true if the player has confirmed using an Anvil */ public boolean checkConfirmation(boolean actualize) { @@ -273,7 +276,7 @@ public class RepairManager extends SkillManager { /** * Handles removing & downgrading enchants. * - * @param item Item being repaired + * @param item {@link ItemStack} being repaired */ private void addEnchants(ItemStack item) { Player player = getPlayer();