From 49de74f989f2f2baa668b6f4c71d28533363fd9b Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 12 Aug 2021 18:22:47 +0100 Subject: [PATCH] Added strong reforg --- .../willfp/reforges/reforges/Reforges.java | 2 + .../reforges/reforges/ReforgeStrong.java | 66 +++++++++++++++++++ .../src/main/resources/reforges/strong.yml | 11 ++++ 3 files changed, 79 insertions(+) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStrong.java create mode 100644 eco-core/core-plugin/src/main/resources/reforges/strong.yml diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java index 99fada9..a8d446e 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java @@ -8,6 +8,7 @@ import com.willfp.reforges.reforges.reforges.ReforgeDynamic; import com.willfp.reforges.reforges.reforges.ReforgeGravitated; import com.willfp.reforges.reforges.reforges.ReforgeLight; import com.willfp.reforges.reforges.reforges.ReforgeSharp; +import com.willfp.reforges.reforges.reforges.ReforgeStrong; import com.willfp.reforges.reforges.reforges.ReforgeWise; import lombok.experimental.UtilityClass; import org.jetbrains.annotations.NotNull; @@ -28,6 +29,7 @@ public class Reforges { public static final Reforge WISE = new ReforgeWise(); public static final Reforge DYNAMIC = new ReforgeDynamic(); public static final Reforge GRAVITATED = new ReforgeGravitated(); + public static final Reforge STRONG = new ReforgeStrong(); /** * Get all registered {@link Reforge}s. diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStrong.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStrong.java new file mode 100644 index 0000000..c53cfee --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStrong.java @@ -0,0 +1,66 @@ +package com.willfp.reforges.reforges.reforges; + +import com.willfp.reforges.reforges.Reforge; +import com.willfp.reforges.reforges.Reforges; +import com.willfp.reforges.reforges.meta.ReforgeTarget; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.jetbrains.annotations.NotNull; + +import java.util.UUID; + +public class ReforgeStrong extends Reforge { + private AttributeModifier kbModifier; + + public ReforgeStrong() { + super("strong"); + } + + @Override + public ReforgeTarget getTarget() { + return ReforgeTarget.MELEE; + } + + @Override + protected void postUpdate() { + this.kbModifier = new AttributeModifier( + UUID.nameUUIDFromBytes("strong-kb".getBytes()), + "strong-kb", + this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "knockback-multiplier") - 1, + AttributeModifier.Operation.MULTIPLY_SCALAR_1, + EquipmentSlot.HAND + ); + } + + @Override + public void onMeleeAttack(@NotNull final LivingEntity attacker, + @NotNull final LivingEntity victim, + @NotNull final EntityDamageByEntityEvent event) { + event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier")); + } + + @Override + public void handleApplication(@NotNull final ItemStack itemStack) { + ItemMeta meta = itemStack.getItemMeta(); + assert meta != null; + + meta.addAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, kbModifier); + meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); + itemStack.setItemMeta(meta); + } + + @Override + public void handleRemoval(@NotNull final ItemStack itemStack) { + ItemMeta meta = itemStack.getItemMeta(); + assert meta != null; + + meta.removeAttributeModifier(Attribute.GENERIC_ATTACK_KNOCKBACK, kbModifier); + itemStack.setItemMeta(meta); + } +} diff --git a/eco-core/core-plugin/src/main/resources/reforges/strong.yml b/eco-core/core-plugin/src/main/resources/reforges/strong.yml new file mode 100644 index 0000000..c4632ec --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/reforges/strong.yml @@ -0,0 +1,11 @@ +# +# Strong Reforge +# + +name: "Strong" +enabled: true +description: "Deal &a2%&r more damage and &a10%&r more knockback" + +config: + multiplier: 1.03 # Damage multiplier + knockback-multiplier: 1.1 \ No newline at end of file