Class DamageModifier

java.lang.Object
me.deecaad.weaponmechanics.weapon.damage.DamageModifier
All Implemented Interfaces:
me.deecaad.core.file.Serializer<DamageModifier>

public class DamageModifier extends Object implements me.deecaad.core.file.Serializer<DamageModifier>
A class that holds all the damage modifiers that can be applied to a victim. This includes armor modifiers, damage point modifiers, movement modifiers, and more. Each modifier is a percentage that is added to the damage dealt to the victim. The final damage is clamped between getMin() and getMax().
  • Constructor Details

    • DamageModifier

      public DamageModifier()
      Default constructor for serializer
    • DamageModifier

      public DamageModifier(double min, double max, double perArmorPoint, it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.inventory.ItemType> armorModifiers, it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.enchantments.Enchantment> enchantmentModifiers, double headModifier, double bodyModifier, double armsModifier, double legsModifier, double feetModifier, double backModifier, double sneakingModifier, double walkingModifier, double swimmingModifier, double sprintingModifier, double inMidairModifier, double shieldModifier, it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.entity.EntityType> entityTypeModifiers, it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.potion.PotionEffectType> potionEffectModifiers)
  • Method Details

    • getMin

      public double getMin()
    • setMin

      public void setMin(double min)
    • getMax

      public double getMax()
    • setMax

      public void setMax(double max)
    • getPerArmorPoint

      public double getPerArmorPoint()
    • setPerArmorPoint

      public void setPerArmorPoint(double perArmorPoint)
    • getArmorModifiers

      public it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.inventory.ItemType> getArmorModifiers()
    • setArmorModifiers

      public void setArmorModifiers(it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.inventory.ItemType> armorModifiers)
    • getEnchantmentModifiers

      public it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.enchantments.Enchantment> getEnchantmentModifiers()
    • setEnchantmentModifiers

      public void setEnchantmentModifiers(it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.enchantments.Enchantment> enchantmentModifiers)
    • getHeadModifier

      public double getHeadModifier()
    • setHeadModifier

      public void setHeadModifier(double headModifier)
    • getBodyModifier

      public double getBodyModifier()
    • setBodyModifier

      public void setBodyModifier(double bodyModifier)
    • getArmsModifier

      public double getArmsModifier()
    • setArmsModifier

      public void setArmsModifier(double armsModifier)
    • getLegsModifier

      public double getLegsModifier()
    • setLegsModifier

      public void setLegsModifier(double legsModifier)
    • getFeetModifier

      public double getFeetModifier()
    • setFeetModifier

      public void setFeetModifier(double feetModifier)
    • getBackModifier

      public double getBackModifier()
    • setBackModifier

      public void setBackModifier(double backModifier)
    • getSneakingModifier

      public double getSneakingModifier()
    • setSneakingModifier

      public void setSneakingModifier(double sneakingModifier)
    • getWalkingModifier

      public double getWalkingModifier()
    • setWalkingModifier

      public void setWalkingModifier(double walkingModifier)
    • getSwimmingModifier

      public double getSwimmingModifier()
    • setSwimmingModifier

      public void setSwimmingModifier(double swimmingModifier)
    • getSprintingModifier

      public double getSprintingModifier()
    • setSprintingModifier

      public void setSprintingModifier(double sprintingModifier)
    • getInMidairModifier

      public double getInMidairModifier()
    • setInMidairModifier

      public void setInMidairModifier(double inMidairModifier)
    • getEntityTypeModifiers

      public it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.entity.EntityType> getEntityTypeModifiers()
    • setEntityTypeModifiers

      public void setEntityTypeModifiers(it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.entity.EntityType> entityTypeModifiers)
    • getPotionEffectModifiers

      public it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.potion.PotionEffectType> getPotionEffectModifiers()
    • setPotionEffectModifiers

      public void setPotionEffectModifiers(it.unimi.dsi.fastutil.objects.Object2DoubleMap<org.bukkit.potion.PotionEffectType> potionEffectModifiers)
    • getRate

      public double getRate(@NotNull EntityWrapper wrapper, @Nullable DamagePoint point, boolean isBackStab)
      Accumulates each rate that should be applied to the damage. The result is clamped between getMin() and getMax().
      Parameters:
      wrapper - The victim being damaged.
      point - Where the victim was hit.
      isBackStab - If the hit came from behind.
      Returns:
      The clamped rate to multiply damage by. Defaults to 1.0.
    • clamp

      public double clamp(double rate)
      Clamps the given rate between getMin() and getMax().
      Parameters:
      rate - The rate to clamp.
      Returns:
      The clamped rate.
    • applyRates

      public double applyRates(double damage, EntityWrapper wrapper, DamagePoint point, boolean isBackStab)
      Applies all rates from this damage modifier to the given damage. This is equivalent to multiplying the damage by getRate(EntityWrapper, DamagePoint, boolean).
      Parameters:
      damage - The damage to apply rates to.
      wrapper - The victim being damaged.
      point - Where the victim was hit.
      isBackStab - If the hit came from behind.
      Returns:
      The damage multiplied by the rate.
    • getKeyword

      public String getKeyword()
      Specified by:
      getKeyword in interface me.deecaad.core.file.Serializer<DamageModifier>
    • serialize

      @NotNull public DamageModifier serialize(@NotNull me.deecaad.core.file.SerializeData data) throws me.deecaad.core.file.SerializerException
      Specified by:
      serialize in interface me.deecaad.core.file.Serializer<DamageModifier>
      Throws:
      me.deecaad.core.file.SerializerException