Search in sources :

Example 1 with HealthModifier

use of org.spongepowered.api.event.cause.entity.health.HealthModifier in project SpongeAPI by SpongePowered.

the class SpongeAbstractHealEntityEventTest method testModifiersApplicable.

@Test
public void testModifiersApplicable() {
    Entity targetEntity = mockParam(Entity.class);
    HealthModifier firstModifer = mockParam(HealthModifier.class);
    HealthModifier secondModifier = mockParam(HealthModifier.class);
    List<HealthFunction> originalFunctions = Lists.newArrayList(HealthFunction.of(firstModifer, p -> p), HealthFunction.of(secondModifier, p -> p));
    HealEntityEvent event = SpongeEventFactory.createHealEntityEvent(Cause.of(EventContext.empty(), "none"), originalFunctions, targetEntity, 0);
    assertThat(event.isModifierApplicable(firstModifer), is(true));
    assertThat(event.isModifierApplicable(secondModifier), is(true));
    assertThat(event.isModifierApplicable(mockParam(HealthModifier.class)), is(false));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) DoubleUnaryOperator(java.util.function.DoubleUnaryOperator) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) Assert.assertThat(org.junit.Assert.assertThat) Cause(org.spongepowered.api.event.cause.Cause) List(java.util.List) Lists(com.google.common.collect.Lists) Matchers.closeTo(org.hamcrest.Matchers.closeTo) Map(java.util.Map) EventContext(org.spongepowered.api.event.cause.EventContext) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) Test(org.junit.Test)

Example 2 with HealthModifier

use of org.spongepowered.api.event.cause.entity.health.HealthModifier in project SpongeAPI by SpongePowered.

the class AbstractHealEntityEvent method setHealAmount.

@Override
public final void setHealAmount(HealthModifier healthModifier, DoubleUnaryOperator function) {
    checkNotNull(healthModifier, "Damage modifier was null!");
    checkNotNull(function, "Function was null!");
    int indexToAddTo = 0;
    boolean addAtEnd = true;
    for (Iterator<HealthFunction> iterator = this.modifierFunctions.iterator(); iterator.hasNext(); ) {
        ModifierFunction<HealthModifier> tuple = iterator.next();
        if (tuple.getModifier().equals(healthModifier)) {
            iterator.remove();
            addAtEnd = false;
            break;
        }
        indexToAddTo++;
    }
    if (addAtEnd) {
        this.modifierFunctions.add(new HealthFunction(healthModifier, function));
    } else {
        this.modifierFunctions.add(indexToAddTo, new HealthFunction(healthModifier, function));
    }
    this.recalculateDamages(this.baseHealAmount);
}
Also used : HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier)

Example 3 with HealthModifier

use of org.spongepowered.api.event.cause.entity.health.HealthModifier in project SpongeAPI by SpongePowered.

the class SpongeAbstractHealEntityEventTest method testUseModifiers.

@Test
public void testUseModifiers() {
    Entity targetEntity = mockParam(Entity.class);
    final int originalDamage = 1;
    final int originalFinalDamage = 18;
    final int firstModifierDamage = 2;
    final int secondModifierDamage = 15;
    HealthModifier firstModifer = mockParam(HealthModifier.class);
    HealthModifier secondModifier = mockParam(HealthModifier.class);
    List<HealthFunction> originalFunctions = Lists.newArrayList(HealthFunction.of(firstModifer, p -> p * 2), HealthFunction.of(secondModifier, p -> p * 5));
    HealEntityEvent event = SpongeEventFactory.createHealEntityEvent(Cause.of(EventContext.empty(), "none"), originalFunctions, targetEntity, originalDamage);
    assertThat(event.getOriginalFunctions(), is(Matchers.equalTo(originalFunctions)));
    assertThat(event.getOriginalHealAmount(), is(closeTo(originalDamage, ERROR)));
    assertThat(event.getOriginalFinalHealAmount(), is(closeTo(originalFinalDamage, ERROR)));
    Map<HealthModifier, Double> originalDamages = event.getOriginalHealingAmounts();
    assertThat(originalDamages.size(), is(originalFunctions.size()));
    assertThat(originalDamages.get(firstModifer), is(closeTo(firstModifierDamage, ERROR)));
    assertThat(originalDamages.get(secondModifier), is(closeTo(secondModifierDamage, ERROR)));
    assertThat(event.getOriginalHealingModifierAmount(firstModifer), is(closeTo(firstModifierDamage, ERROR)));
    assertThat(event.getOriginalHealingModifierAmount(secondModifier), is(closeTo(secondModifierDamage, ERROR)));
    assertThat(event.getOriginalFunctions(), is(Matchers.equalTo(originalFunctions)));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) DoubleUnaryOperator(java.util.function.DoubleUnaryOperator) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) Assert.assertThat(org.junit.Assert.assertThat) Cause(org.spongepowered.api.event.cause.Cause) List(java.util.List) Lists(com.google.common.collect.Lists) Matchers.closeTo(org.hamcrest.Matchers.closeTo) Map(java.util.Map) EventContext(org.spongepowered.api.event.cause.EventContext) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) Test(org.junit.Test)

Example 4 with HealthModifier

use of org.spongepowered.api.event.cause.entity.health.HealthModifier in project SpongeAPI by SpongePowered.

the class SpongeAbstractHealEntityEventTest method testAddModifier.

@Test
public void testAddModifier() {
    Entity targetEntity = mockParam(Entity.class);
    final int originalDamage = 1;
    final int originalFinalDamage = 18;
    final int firstModifierDamage = 2;
    final int secondModifierDamage = 15;
    final int modifiedFinalDamage = 36;
    final int thirdDamage = 18;
    HealthModifier firstModifer = mockParam(HealthModifier.class);
    HealthModifier secondModifier = mockParam(HealthModifier.class);
    HealthModifier thirdModifier = mockParam(HealthModifier.class);
    DoubleUnaryOperator thirdFunction = p -> p;
    List<HealthFunction> originalFunctions = Lists.newArrayList(HealthFunction.of(firstModifer, p -> p * 2), HealthFunction.of(secondModifier, p -> p * 5));
    List<HealthFunction> newFunctions = Lists.newArrayList(originalFunctions);
    newFunctions.add(HealthFunction.of(thirdModifier, thirdFunction));
    HealEntityEvent event = SpongeEventFactory.createHealEntityEvent(Cause.of(EventContext.empty(), "none"), originalFunctions, targetEntity, originalDamage);
    assertThat(event.getOriginalFunctions(), is(Matchers.equalTo(originalFunctions)));
    assertThat(event.isModifierApplicable(thirdModifier), is(false));
    event.setHealAmount(thirdModifier, thirdFunction);
    assertThat(event.getHealAmount(firstModifer), is(closeTo(firstModifierDamage, ERROR)));
    assertThat(event.getHealAmount(secondModifier), is(closeTo(secondModifierDamage, ERROR)));
    assertThat(event.getHealAmount(thirdModifier), is(closeTo(thirdDamage, ERROR)));
    assertThat(event.getOriginalHealingModifierAmount(firstModifer), is(closeTo(firstModifierDamage, ERROR)));
    assertThat(event.getOriginalHealingModifierAmount(secondModifier), is(closeTo(secondModifierDamage, ERROR)));
    assertThat(event.getOriginalHealAmount(), is(closeTo(originalDamage, ERROR)));
    assertThat(event.getOriginalFinalHealAmount(), is(closeTo(originalFinalDamage, ERROR)));
    assertThat(event.getFinalHealAmount(), is(closeTo(modifiedFinalDamage, ERROR)));
    assertThat(event.getOriginalFunctions(), is(Matchers.equalTo(originalFunctions)));
    assertThat(event.getModifiers(), is(Matchers.equalTo(newFunctions)));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) DoubleUnaryOperator(java.util.function.DoubleUnaryOperator) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) Assert.assertThat(org.junit.Assert.assertThat) Cause(org.spongepowered.api.event.cause.Cause) List(java.util.List) Lists(com.google.common.collect.Lists) Matchers.closeTo(org.hamcrest.Matchers.closeTo) Map(java.util.Map) EventContext(org.spongepowered.api.event.cause.EventContext) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) DoubleUnaryOperator(java.util.function.DoubleUnaryOperator) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) Test(org.junit.Test)

Example 5 with HealthModifier

use of org.spongepowered.api.event.cause.entity.health.HealthModifier in project SpongeAPI by SpongePowered.

the class SpongeAbstractHealEntityEventTest method testSetModifiers.

@Test
public void testSetModifiers() {
    Entity targetEntity = mockParam(Entity.class);
    final int originalDamage = 1;
    final int originalFinalDamage = 18;
    final int firstModifierDamage = 2;
    final int secondModifierDamage = 15;
    final int firstChangedDamage = 1;
    final int secondChangedDamage = 10;
    final int modifiedFinalDamage = 12;
    HealthModifier firstModifer = mockParam(HealthModifier.class);
    HealthModifier secondModifier = mockParam(HealthModifier.class);
    List<HealthFunction> originalFunctions = Lists.newArrayList(HealthFunction.of(firstModifer, p -> p * 2), HealthFunction.of(secondModifier, p -> p * 5));
    HealEntityEvent event = SpongeEventFactory.createHealEntityEvent(Cause.of(EventContext.empty(), "none"), originalFunctions, targetEntity, originalDamage);
    assertThat(event.getOriginalFunctions(), is(Matchers.equalTo(originalFunctions)));
    DoubleUnaryOperator newFunction = p -> p;
    event.setHealAmount(firstModifer, newFunction);
    assertThat(event.getHealAmount(firstModifer), is(closeTo(firstChangedDamage, ERROR)));
    assertThat(event.getHealAmount(secondModifier), is(closeTo(secondChangedDamage, ERROR)));
    assertThat(event.getOriginalHealingModifierAmount(firstModifer), is(closeTo(firstModifierDamage, ERROR)));
    assertThat(event.getOriginalHealingModifierAmount(secondModifier), is(closeTo(secondModifierDamage, ERROR)));
    assertThat(event.getOriginalHealAmount(), is(closeTo(originalDamage, ERROR)));
    assertThat(event.getOriginalFinalHealAmount(), is(closeTo(originalFinalDamage, ERROR)));
    assertThat(event.getFinalHealAmount(), is(closeTo(modifiedFinalDamage, ERROR)));
    assertThat(event.getOriginalFunctions(), is(Matchers.equalTo(originalFunctions)));
    assertThat(event.getModifiers(), is(Matchers.equalTo(Lists.newArrayList(HealthFunction.of(firstModifer, newFunction), originalFunctions.get(1)))));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) DoubleUnaryOperator(java.util.function.DoubleUnaryOperator) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) Assert.assertThat(org.junit.Assert.assertThat) Cause(org.spongepowered.api.event.cause.Cause) List(java.util.List) Lists(com.google.common.collect.Lists) Matchers.closeTo(org.hamcrest.Matchers.closeTo) Map(java.util.Map) EventContext(org.spongepowered.api.event.cause.EventContext) Entity(org.spongepowered.api.entity.Entity) HealEntityEvent(org.spongepowered.api.event.entity.HealEntityEvent) HealthModifier(org.spongepowered.api.event.cause.entity.health.HealthModifier) HealthFunction(org.spongepowered.api.event.cause.entity.health.HealthFunction) DoubleUnaryOperator(java.util.function.DoubleUnaryOperator) Test(org.junit.Test)

Aggregations

HealthModifier (org.spongepowered.api.event.cause.entity.health.HealthModifier)6 Test (org.junit.Test)5 Entity (org.spongepowered.api.entity.Entity)5 HealthFunction (org.spongepowered.api.event.cause.entity.health.HealthFunction)5 HealEntityEvent (org.spongepowered.api.event.entity.HealEntityEvent)5 Lists (com.google.common.collect.Lists)4 List (java.util.List)4 Map (java.util.Map)4 DoubleUnaryOperator (java.util.function.DoubleUnaryOperator)4 CoreMatchers.is (org.hamcrest.CoreMatchers.is)4 Matchers (org.hamcrest.Matchers)4 Matchers.closeTo (org.hamcrest.Matchers.closeTo)4 Assert.assertThat (org.junit.Assert.assertThat)4 Cause (org.spongepowered.api.event.cause.Cause)4 EventContext (org.spongepowered.api.event.cause.EventContext)4