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:
@@ -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.
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,2 +1,2 @@
|
||||
version = 5.0.1
|
||||
version = 5.1.0
|
||||
plugin-name = EcoArmor
|
||||
Reference in New Issue
Block a user