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 a668d10..3504037 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
@@ -6,13 +6,17 @@ import com.google.common.collect.ImmutableSet;
import com.willfp.eco.core.config.updating.ConfigUpdater;
import com.willfp.reforges.reforges.reforges.ReforgeAerobic;
import com.willfp.reforges.reforges.reforges.ReforgeDynamic;
+import com.willfp.reforges.reforges.reforges.ReforgeEvasive;
import com.willfp.reforges.reforges.reforges.ReforgeGravitated;
import com.willfp.reforges.reforges.reforges.ReforgeLight;
import com.willfp.reforges.reforges.reforges.ReforgeLucky;
+import com.willfp.reforges.reforges.reforges.ReforgeReinforced;
import com.willfp.reforges.reforges.reforges.ReforgeRich;
import com.willfp.reforges.reforges.reforges.ReforgeSharp;
import com.willfp.reforges.reforges.reforges.ReforgeStreamlined;
import com.willfp.reforges.reforges.reforges.ReforgeStrong;
+import com.willfp.reforges.reforges.reforges.ReforgeThin;
+import com.willfp.reforges.reforges.reforges.ReforgeTough;
import com.willfp.reforges.reforges.reforges.ReforgeWealthy;
import com.willfp.reforges.reforges.reforges.ReforgeWise;
import lombok.experimental.UtilityClass;
@@ -40,6 +44,10 @@ public class Reforges {
public static final Reforge LUCKY = new ReforgeLucky();
public static final Reforge AEROBIC = new ReforgeAerobic();
public static final Reforge STREAMLINED = new ReforgeStreamlined();
+ public static final Reforge THIN = new ReforgeThin();
+ public static final Reforge TOUGH = new ReforgeTough();
+ public static final Reforge REINFORCED = new ReforgeReinforced();
+ public static final Reforge EVASIVE = new ReforgeEvasive();
/**
* Get all registered {@link Reforge}s.
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeEvasive.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeEvasive.java
new file mode 100644
index 0000000..f3d0b43
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeEvasive.java
@@ -0,0 +1,28 @@
+package com.willfp.reforges.reforges.reforges;
+
+import com.willfp.eco.util.NumberUtils;
+import com.willfp.reforges.reforges.Reforge;
+import com.willfp.reforges.reforges.Reforges;
+import com.willfp.reforges.reforges.meta.ReforgeTarget;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.event.entity.EntityDamageEvent;
+import org.jetbrains.annotations.NotNull;
+
+public class ReforgeEvasive extends Reforge {
+ public ReforgeEvasive() {
+ super("evasive");
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.ARMOR;
+ }
+
+ @Override
+ public void onDamageWearingArmor(@NotNull final LivingEntity victim,
+ @NotNull final EntityDamageEvent event) {
+ if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
+ event.setCancelled(true);
+ }
+ }
+}
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeReinforced.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeReinforced.java
new file mode 100644
index 0000000..728b431
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeReinforced.java
@@ -0,0 +1,25 @@
+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.entity.LivingEntity;
+import org.bukkit.event.entity.EntityDamageEvent;
+import org.jetbrains.annotations.NotNull;
+
+public class ReforgeReinforced extends Reforge {
+ public ReforgeReinforced() {
+ super("reinforced");
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.ARMOR;
+ }
+
+ @Override
+ public void onDamageWearingArmor(@NotNull final LivingEntity victim,
+ @NotNull final EntityDamageEvent event) {
+ event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
+ }
+}
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeThin.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeThin.java
new file mode 100644
index 0000000..0efe105
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeThin.java
@@ -0,0 +1,63 @@
+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.EntityDamageEvent;
+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 ReforgeThin extends Reforge {
+ private AttributeModifier speedModifier;
+
+ public ReforgeThin() {
+ super("thin");
+ }
+
+ @Override
+ protected void postUpdate() {
+ this.speedModifier = new AttributeModifier(
+ UUID.nameUUIDFromBytes("thin-speed".getBytes()),
+ "thin-speed",
+ this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
+ AttributeModifier.Operation.MULTIPLY_SCALAR_1
+ );
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.ARMOR;
+ }
+
+ @Override
+ public void onDamageWearingArmor(@NotNull final LivingEntity victim,
+ @NotNull final EntityDamageEvent 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_MOVEMENT_SPEED, speedModifier);
+ 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_MOVEMENT_SPEED, speedModifier);
+ itemStack.setItemMeta(meta);
+ }
+}
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeTough.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeTough.java
new file mode 100644
index 0000000..3d32469
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeTough.java
@@ -0,0 +1,63 @@
+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.EntityDamageEvent;
+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 ReforgeTough extends Reforge {
+ private AttributeModifier speedModifier;
+
+ public ReforgeTough() {
+ super("tough");
+ }
+
+ @Override
+ protected void postUpdate() {
+ this.speedModifier = new AttributeModifier(
+ UUID.nameUUIDFromBytes("tough-speed".getBytes()),
+ "tough-speed",
+ this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "speed-multiplier") - 1,
+ AttributeModifier.Operation.MULTIPLY_SCALAR_1
+ );
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.ARMOR;
+ }
+
+ @Override
+ public void onDamageWearingArmor(@NotNull final LivingEntity victim,
+ @NotNull final EntityDamageEvent 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_MOVEMENT_SPEED, speedModifier);
+ 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_MOVEMENT_SPEED, speedModifier);
+ itemStack.setItemMeta(meta);
+ }
+}
diff --git a/eco-core/core-plugin/src/main/resources/reforges/evasive.yml b/eco-core/core-plugin/src/main/resources/reforges/evasive.yml
new file mode 100644
index 0000000..2ace773
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/evasive.yml
@@ -0,0 +1,16 @@
+#
+# Evasive Reforge
+#
+
+name: "Evasive"
+enabled: true
+description: "&a2%&r chance to ignore damage"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ chance: 2
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/reforges/reinforced.yml b/eco-core/core-plugin/src/main/resources/reforges/reinforced.yml
new file mode 100644
index 0000000..3f8f55b
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/reinforced.yml
@@ -0,0 +1,16 @@
+#
+# Reinforced Reforge
+#
+
+name: "Reinforced"
+enabled: true
+description: "Take &a4%&r less damage"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ multiplier: 0.96 # Damage taken multiplier
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/reforges/thin.yml b/eco-core/core-plugin/src/main/resources/reforges/thin.yml
new file mode 100644
index 0000000..9024fe4
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/thin.yml
@@ -0,0 +1,17 @@
+#
+# Thin Reforge
+#
+
+name: "Thin"
+enabled: true
+description: "Take &a5%&r more damage but move &a2.5%&r faster"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ multiplier: 1.05 # Damage taken multiplier
+ speed-multiplier: 1.025
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/reforges/tough.yml b/eco-core/core-plugin/src/main/resources/reforges/tough.yml
new file mode 100644
index 0000000..d256a2f
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/tough.yml
@@ -0,0 +1,17 @@
+#
+# Tough Reforge
+#
+
+name: "Tough"
+enabled: true
+description: "Take &a8%&r less damage but move &a5%&r slower"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ multiplier: 0.92 # Damage taken multiplier
+ speed-multiplier: 0.95
\ No newline at end of file