9
0
mirror of https://github.com/Auxilor/EcoArmor.git synced 2025-12-28 19:39:13 +00:00

Added knockback-multiplier effect

This commit is contained in:
Auxilor
2021-07-31 17:38:11 +01:00
parent 56da8ede84
commit 66f3543204
4 changed files with 45 additions and 1 deletions

View File

@@ -14,6 +14,7 @@ import com.willfp.ecoarmor.effects.effects.ExperienceMultiplier;
import com.willfp.ecoarmor.effects.effects.FallDamageMultiplier;
import com.willfp.ecoarmor.effects.effects.Flight;
import com.willfp.ecoarmor.effects.effects.HungerLossMultiplier;
import com.willfp.ecoarmor.effects.effects.KnockbackMultiplier;
import com.willfp.ecoarmor.effects.effects.MeleeDamageMultiplier;
import com.willfp.ecoarmor.effects.effects.RegenerationMultiplier;
import com.willfp.ecoarmor.effects.effects.SpeedMultiplier;
@@ -49,6 +50,7 @@ public class Effects {
public static final Effect<?> FLIGHT = new Flight();
public static final Effect<?> HUNGER_LOSS_MULTIPLIER = new HungerLossMultiplier();
public static final Effect<?> BOSS_DAMAGE_MULTIPLIER = new BossDamageMultiplier();
public static final Effect<?> KNOCKBACK_MULTIPLIER = new KnockbackMultiplier();
/**
* Get effect matching name.

View File

@@ -0,0 +1,39 @@
package com.willfp.ecoarmor.effects.effects;
import com.willfp.ecoarmor.effects.Effect;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class KnockbackMultiplier extends Effect<Double> {
public KnockbackMultiplier() {
super("knockback-multiplier", Double.class);
}
@Override
protected void onEnable(@NotNull final Player player) {
AttributeInstance movementSpeed = player.getAttribute(Attribute.GENERIC_ATTACK_KNOCKBACK);
assert movementSpeed != null;
Double strength = this.getStrengthForPlayer(player);
if (strength == null) {
return;
}
AttributeModifier modifier = new AttributeModifier(this.getUuid(), "kb-multiplier", strength - 1, AttributeModifier.Operation.MULTIPLY_SCALAR_1);
if (movementSpeed.getModifiers().stream().noneMatch(attributeModifier -> attributeModifier.getUniqueId().equals(modifier.getUniqueId()))) {
movementSpeed.addModifier(modifier);
}
}
@Override
protected void onDisable(@NotNull final Player player) {
AttributeInstance movementSpeed = player.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED);
assert movementSpeed != null;
movementSpeed.removeModifier(new AttributeModifier(this.getUuid(), "kb-multiplier", 0, AttributeModifier.Operation.MULTIPLY_SCALAR_1));
}
}

View File

@@ -60,4 +60,7 @@ effects:
enabled: true
boss-damage-multiplier:
# Modify boss damage by some multiplier
enabled: true
knockback-multiplier:
# Modify knockback by some multiplier
enabled: true

View File

@@ -1,2 +1,2 @@
version = 5.0.1
version = 5.1.0
plugin-name = EcoArmor