Add a modifier function for each DamageModifier

Must have a modifier function for each DamageModifier

Fixes #2139
This commit is contained in:
TfT_02 2014-07-18 00:16:12 +02:00
parent 6b9f6c29ec
commit d93c83f775
2 changed files with 26 additions and 6 deletions

View File

@ -8,20 +8,30 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Functions; import com.google.common.base.Functions;
import com.google.common.collect.ImmutableMap;
/** /**
* Called when mcMMO applies damage from an entity due to special abilities. * Called when mcMMO applies damage from an entity due to special abilities.
*/ */
public class FakeEntityDamageByEntityEvent extends EntityDamageByEntityEvent { public class FakeEntityDamageByEntityEvent extends EntityDamageByEntityEvent {
private static final Function<? super Double, Double> ZERO = Functions.constant(-0.0); private static final EnumMap<DamageModifier, Function<? super Double, Double>> functionModifiers = getFunctionModifiers();
public FakeEntityDamageByEntityEvent(Entity damager, Entity damagee, DamageCause cause, final Map<DamageModifier, Double> modifiers) { public FakeEntityDamageByEntityEvent(Entity damager, Entity damagee, DamageCause cause, final Map<DamageModifier, Double> modifiers) {
super(damager, damagee, cause, modifiers, new EnumMap<DamageModifier, Function<? super Double, Double>>(ImmutableMap.of(DamageModifier.BASE, ZERO))); super(damager, damagee, cause, modifiers, functionModifiers);
} }
@Deprecated @Deprecated
public FakeEntityDamageByEntityEvent(Entity damager, Entity damagee, DamageCause cause, double damage) { public FakeEntityDamageByEntityEvent(Entity damager, Entity damagee, DamageCause cause, double damage) {
super(damager, damagee, cause, damage); super(damager, damagee, cause, damage);
} }
public static EnumMap<DamageModifier, Function<? super Double, Double>> getFunctionModifiers() {
EnumMap<DamageModifier, Function<? super Double, Double>> modifierFunctions = new EnumMap<DamageModifier, Function<? super Double, Double>>(DamageModifier.class);
Function<? super Double, Double> ZERO = Functions.constant(-0.0);
for (DamageModifier modifier : DamageModifier.values()) {
modifierFunctions.put(modifier, ZERO);
}
return modifierFunctions;
}
} }

View File

@ -8,20 +8,30 @@ import org.bukkit.event.entity.EntityDamageEvent;
import com.google.common.base.Function; import com.google.common.base.Function;
import com.google.common.base.Functions; import com.google.common.base.Functions;
import com.google.common.collect.ImmutableMap;
/** /**
* Called when mcMMO applies damage due to special abilities. * Called when mcMMO applies damage due to special abilities.
*/ */
public class FakeEntityDamageEvent extends EntityDamageEvent { public class FakeEntityDamageEvent extends EntityDamageEvent {
private static final Function<? super Double, Double> ZERO = Functions.constant(-0.0); private static final EnumMap<DamageModifier, Function<? super Double, Double>> functionModifiers = getFunctionModifiers();
public FakeEntityDamageEvent(Entity damagee, DamageCause cause, final Map<DamageModifier, Double> modifiers) { public FakeEntityDamageEvent(Entity damagee, DamageCause cause, final Map<DamageModifier, Double> modifiers) {
super(damagee, cause, modifiers, new EnumMap<DamageModifier, Function<? super Double, Double>>(ImmutableMap.of(DamageModifier.BASE, ZERO))); super(damagee, cause, modifiers, functionModifiers);
} }
@Deprecated @Deprecated
public FakeEntityDamageEvent(Entity damagee, DamageCause cause, double damage) { public FakeEntityDamageEvent(Entity damagee, DamageCause cause, double damage) {
super(damagee, cause, damage); super(damagee, cause, damage);
} }
public static EnumMap<DamageModifier, Function<? super Double, Double>> getFunctionModifiers() {
EnumMap<DamageModifier, Function<? super Double, Double>> modifierFunctions = new EnumMap<DamageModifier, Function<? super Double, Double>>(DamageModifier.class);
Function<? super Double, Double> ZERO = Functions.constant(-0.0);
for (DamageModifier modifier : DamageModifier.values()) {
modifierFunctions.put(modifier, ZERO);
}
return modifierFunctions;
}
} }