DamageBreakdown

public class DamageBreakdown

Tracks the breakdown of damage components for debugging and testing purposes.

The offensive damage formula uses multiplicative layers:

formulaDamage = baseDamage × attackSpeedFactor × skillAdjustment × weaponAdjustment × cooldownOrVelocity × sweepMultiplier × potionMultiplier
              × equipmentEnchantmentMultiplier × enchantmentMultiplier × arrowDamageMultiplier
finalDamage = max(formulaDamage, 1) × damageModifier × combatMultiplier × critMultiplier

Where:

  • Base Damage: normalizedMobHP / TARGET_HITS_TO_KILL_MOB — scales with mob level
  • Attack Speed Factor: tuned melee pacing curve from vanilla-equivalent attack speed
  • Skill Adjustment: 2^((skillLevel - mobLevel) / 7.5) — exponential skill scaling
  • Weapon Adjustment: two-part linear curve from weapon level vs mob level [0.5, 1.25]
  • Cooldown/Velocity: attack cooldown (melee) or arrow velocity (ranged) [0, 1]
  • Sweep Multiplier: 0.25 for sweep secondary targets, 1.0 otherwise
  • Equipment Enchantment Multiplier: Sharpness/Power percentage bonus from all equipped slots
  • Damage Modifier: boss-specific damage reduction
  • Combat Multiplier: global config multiplier
  • Critical Strike: 1.5x on critical hits

Constructors

Link copied to clipboard
public void DamageBreakdown()

Properties

Link copied to clipboard
public double arrowDamageMultiplier
Link copied to clipboard
public double attackSpeedFactor
Link copied to clipboard
public double baseDamage
Link copied to clipboard
public double combatMultiplier
Link copied to clipboard
public double cooldownOrVelocity
Link copied to clipboard
public double critMultiplier
Link copied to clipboard
public double damageModifier
Link copied to clipboard
public int eliteLevel
Link copied to clipboard
public double enchantmentMultiplier
Link copied to clipboard
Link copied to clipboard
public double finalDamage
Link copied to clipboard
public double formulaDamage
Link copied to clipboard
public boolean isCriticalHit
Link copied to clipboard
public boolean isRangedAttack
Link copied to clipboard
public boolean isSweepAttack
Link copied to clipboard
public boolean isThornsAttack
Link copied to clipboard
public int itemLevel
Link copied to clipboard
public int playerSkillLevel
Link copied to clipboard
public double potionMultiplier
Link copied to clipboard
public double skillAdjustment
Link copied to clipboard
public double skillBonusMultiplier
Link copied to clipboard
public double sweepMultiplier
Link copied to clipboard
public double thornsDamage
Link copied to clipboard
public double weaponAdjustment
Link copied to clipboard
public String weaponType

Functions

Link copied to clipboard
public static double calculateExpectedDamage(int weaponLevel, int skillLevel, int targetLevel, double attackSpeed)
Calculates what the expected damage SHOULD be given proper gear at matched combat.
public static double calculateExpectedDamage(int weaponLevel, int skillLevel, int targetLevel, String weaponType, double attackSpeed)
Calculates expected damage with a known weapon family.
Link copied to clipboard
public static void clearAll()
Clears all active breakdowns.
Link copied to clipboard
public void compute()
Computes final damage from all components using the multiplicative formula.
Link copied to clipboard
public static DamageBreakdown getActiveBreakdown(UUID uuid)
Gets the active breakdown for a player by UUID.
public static DamageBreakdown getActiveBreakdown(Player player)
Gets the active breakdown for a player.
Link copied to clipboard
public double getArrowDamageMultiplier()
Link copied to clipboard
public double getAttackSpeedFactor()
Link copied to clipboard
public double getBaseDamage()
Link copied to clipboard
public double getCombatMultiplier()
Link copied to clipboard
public double getCooldownOrVelocity()
Link copied to clipboard
public double getCritMultiplier()
Link copied to clipboard
public double getDamageModifier()
Link copied to clipboard
public int getEliteLevel()
Link copied to clipboard
public double getEnchantmentMultiplier()
Link copied to clipboard
Link copied to clipboard
public double getFinalDamage()
Link copied to clipboard
public double getFormulaDamage()
Link copied to clipboard
public int getItemLevel()
Link copied to clipboard
public int getPlayerSkillLevel()
Link copied to clipboard
public double getPotionMultiplier()
Link copied to clipboard
public double getSkillAdjustment()
Link copied to clipboard
public double getSkillBonusMultiplier()
Link copied to clipboard
public double getSweepMultiplier()
Link copied to clipboard
public double getThornsDamage()
Link copied to clipboard
public double getWeaponAdjustment()
Link copied to clipboard
public String getWeaponType()
Link copied to clipboard
public boolean isCriticalHit()
Link copied to clipboard
public boolean isRangedAttack()
Link copied to clipboard
public boolean isSweepAttack()
Link copied to clipboard
public boolean isThornsAttack()
Link copied to clipboard
public static boolean isTracking(UUID uuid)
Checks if breakdown tracking is active for a player UUID.
public static boolean isTracking(Player player)
Checks if breakdown tracking is active for a player.
Link copied to clipboard
public void setArrowDamageMultiplier(double arrowDamageMultiplier)
Link copied to clipboard
public void setAttackSpeedFactor(double attackSpeedFactor)
Link copied to clipboard
public void setBaseDamage(double baseDamage)
Link copied to clipboard
public void setCombatMultiplier(double combatMultiplier)
Link copied to clipboard
public void setCooldownOrVelocity(double cooldownOrVelocity)
Link copied to clipboard
public void setCriticalHit(boolean isCriticalHit)
Link copied to clipboard
public void setCritMultiplier(double critMultiplier)
Link copied to clipboard
public void setDamageModifier(double damageModifier)
Link copied to clipboard
public void setEliteLevel(int eliteLevel)
Link copied to clipboard
public void setEnchantmentMultiplier(double enchantmentMultiplier)
Link copied to clipboard
public void setEquipmentEnchantmentMultiplier(double equipmentEnchantmentMultiplier)
Link copied to clipboard
public void setItemLevel(int itemLevel)
Link copied to clipboard
public void setPlayerSkillLevel(int playerSkillLevel)
Link copied to clipboard
public void setPotionMultiplier(double potionMultiplier)
Link copied to clipboard
public void setRangedAttack(boolean isRangedAttack)
Link copied to clipboard
public void setSkillAdjustment(double skillAdjustment)
Link copied to clipboard
public void setSkillBonusMultiplier(double skillBonusMultiplier)
Link copied to clipboard
public void setSweepAttack(boolean isSweepAttack)
Link copied to clipboard
public void setSweepMultiplier(double sweepMultiplier)
Link copied to clipboard
public void setThornsAttack(boolean isThornsAttack)
Link copied to clipboard
public void setThornsDamage(double thornsDamage)
Link copied to clipboard
public void setWeaponAdjustment(double weaponAdjustment)
Link copied to clipboard
public void setWeaponType(String weaponType)
Link copied to clipboard
public static void shutdown()
Cleans up on plugin disable.
Link copied to clipboard
public static DamageBreakdown startTracking(Player player)
Starts tracking a damage breakdown for a player.
Link copied to clipboard
public static DamageBreakdown stopTracking(Player player)
Stops tracking and returns the breakdown.
Link copied to clipboard
public String toCompactString()
Generates a compact one-line summary.
Link copied to clipboard
public String toComparisonString(double actualDamage)
Generates a comparison of expected vs actual damage.
Link copied to clipboard
public String toFormattedString()
Generates a formatted string breakdown for display.