public abstract class AbstractDamageEntityEvent extends AbstractEvent implements DamageEntityEvent
Modifier and Type | Field and Description |
---|---|
protected List<Tuple<DamageModifier,Function<? super Double,Double>>> |
functions |
protected double |
originalDamage |
callbacks
Constructor and Description |
---|
AbstractDamageEntityEvent() |
Modifier and Type | Method and Description |
---|---|
double |
getBaseDamage()
Gets the "base" damage to deal to the targeted
Entity . |
double |
getDamage(DamageModifier damageModifier)
Gets the damage for the provided
DamageModifier . |
double |
getFinalDamage()
Gets the final damage that will be passed into the proceeding
DamageEntityEvent . |
List<Tuple<DamageModifier,Function<? super Double,Double>>> |
getModifiers()
|
double |
getOriginalDamage()
Gets the original "raw" amount of damage to deal to the targeted
Entity . |
Map<DamageModifier,Double> |
getOriginalDamages()
Gets an
ImmutableMap of all original DamageModifier s
and their associated "modified" damage. |
double |
getOriginalFinalDamage()
Gets the original "final" amount of damage after all original
DamageModifier s are applied to DamageEntityEvent.getOriginalDamage() . |
List<Tuple<DamageModifier,Function<? super Double,Double>>> |
getOriginalFunctions()
|
double |
getOriginalModifierDamage(DamageModifier damageModifier)
Gets the original damage for the provided
DamageModifier . |
protected void |
init()
Called once all fields have been set by the generated
constructor in a subclass.
|
boolean |
isModifierApplicable(DamageModifier damageModifier)
Checks whether the provided
DamageModifier is applicable to the
current available DamageModifier s. |
void |
setBaseDamage(double baseDamage)
Sets the "base" damage to deal to the targeted
Entity . |
void |
setDamage(DamageModifier damageModifier,
Function<? super Double,Double> function)
Sets the provided
Function to be used for the given
DamageModifier . |
getCallbacks
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getTargetEntity
getCallbacks
getCause
protected void init()
AbstractEvent
This method should be used to initialize any fields that depend on parameters passed to the constructor.
init
in class AbstractEvent
public final double getOriginalDamage()
DamageEntityEvent
Entity
.getOriginalDamage
in interface DamageEntityEvent
public final double getOriginalModifierDamage(DamageModifier damageModifier)
DamageEntityEvent
DamageModifier
. If
the provided DamageModifier
was not included in
DamageEntityEvent.getOriginalDamages()
, an IllegalArgumentException
is
thrown.getOriginalModifierDamage
in interface DamageEntityEvent
damageModifier
- The original damage modifierpublic final Map<DamageModifier,Double> getOriginalDamages()
DamageEntityEvent
ImmutableMap
of all original DamageModifier
s
and their associated "modified" damage. Note that ordering is not
retained.getOriginalDamages
in interface DamageEntityEvent
public final List<Tuple<DamageModifier,Function<? super Double,Double>>> getOriginalFunctions()
DamageEntityEvent
getOriginalFunctions
in interface DamageEntityEvent
public final double getOriginalFinalDamage()
DamageEntityEvent
DamageModifier
s are applied to DamageEntityEvent.getOriginalDamage()
.
The "final" damage is considered the amount of health being lost by
the Entity
, if health is tracked.getOriginalFinalDamage
in interface DamageEntityEvent
public final double getBaseDamage()
DamageEntityEvent
Entity
. The
"base" damage is the original value before passing along the chain of
Function
s for all known DamageModifier
s.getBaseDamage
in interface DamageEntityEvent
public final void setBaseDamage(double baseDamage)
DamageEntityEvent
Entity
. The
"base" damage is the original value before passing along the chain of
Function
s for all known DamageModifier
s.setBaseDamage
in interface DamageEntityEvent
baseDamage
- The base damagepublic final double getFinalDamage()
DamageEntityEvent
DamageEntityEvent
. The final damage is the end result of the
DamageEntityEvent.getBaseDamage()
being applied in Function.apply(Object)
available from all the Tuple
s of DamageModifier
to
Function
in DamageEntityEvent.getOriginalFunctions()
.getFinalDamage
in interface DamageEntityEvent
public final boolean isModifierApplicable(DamageModifier damageModifier)
DamageEntityEvent
DamageModifier
is applicable to the
current available DamageModifier
s.isModifierApplicable
in interface DamageEntityEvent
damageModifier
- The damage modifier to checkpublic final double getDamage(DamageModifier damageModifier)
DamageEntityEvent
DamageModifier
. Providing that
DamageEntityEvent.isModifierApplicable(DamageModifier)
returns true
,
the cached "damage" for the DamageModifier
is returned.getDamage
in interface DamageEntityEvent
damageModifier
- The damage modifier to get the damage forpublic final void setDamage(DamageModifier damageModifier, Function<? super Double,Double> function)
DamageEntityEvent
Function
to be used for the given
DamageModifier
. If the DamageModifier
is already
included in DamageEntityEvent.getModifiers()
, the Function
replaces
the existing function. If there is no Tuple
for the
DamageModifier
, a new one is created and added to the end
of the list of Function
s to be applied to the
DamageEntityEvent.getBaseDamage()
.
If needing to create a custom DamageModifier
is required,
usage of the DamageModifierBuilder
is recommended.
setDamage
in interface DamageEntityEvent
damageModifier
- The damage modifierfunction
- The function to map to the modifierpublic final List<Tuple<DamageModifier,Function<? super Double,Double>>> getModifiers()
DamageEntityEvent
Tuple
s of DamageModifier
keyed to
their representative Function
s. All DamageModifier
s are
applicable to the entity based on the DamageSource
and any
possible invulnerabilities due to the DamageSource
.getModifiers
in interface DamageEntityEvent