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 0666a07..a668d10 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
@@ -4,10 +4,14 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
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.ReforgeGravitated;
import com.willfp.reforges.reforges.reforges.ReforgeLight;
+import com.willfp.reforges.reforges.reforges.ReforgeLucky;
+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.ReforgeWealthy;
import com.willfp.reforges.reforges.reforges.ReforgeWise;
@@ -32,6 +36,10 @@ public class Reforges {
public static final Reforge GRAVITATED = new ReforgeGravitated();
public static final Reforge STRONG = new ReforgeStrong();
public static final Reforge WEALTHY = new ReforgeWealthy();
+ public static final Reforge RICH = new ReforgeRich();
+ public static final Reforge LUCKY = new ReforgeLucky();
+ public static final Reforge AEROBIC = new ReforgeAerobic();
+ public static final Reforge STREAMLINED = new ReforgeStreamlined();
/**
* Get all registered {@link Reforge}s.
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeAerobic.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeAerobic.java
new file mode 100644
index 0000000..47a6bf2
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeAerobic.java
@@ -0,0 +1,30 @@
+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.Arrow;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.jetbrains.annotations.NotNull;
+
+public class ReforgeAerobic extends Reforge {
+ public ReforgeAerobic() {
+ super("aerobic");
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.BOW;
+ }
+
+ @Override
+ public void onArrowDamage(@NotNull final LivingEntity attacker,
+ @NotNull final LivingEntity victim,
+ @NotNull final Arrow arrow,
+ @NotNull final EntityDamageByEntityEvent event) {
+ if (!attacker.isOnGround()) {
+ 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/ReforgeLucky.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeLucky.java
new file mode 100644
index 0000000..b2e5d44
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeLucky.java
@@ -0,0 +1,33 @@
+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.Arrow;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.jetbrains.annotations.NotNull;
+
+public class ReforgeLucky extends Reforge {
+ public ReforgeLucky() {
+ super("lucky");
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.BOW;
+ }
+
+ @Override
+ public void onArrowDamage(@NotNull final LivingEntity attacker,
+ @NotNull final LivingEntity victim,
+ @NotNull final Arrow arrow,
+ @NotNull final EntityDamageByEntityEvent event) {
+ if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "chance")) {
+ event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
+ } else {
+ event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "bad-multiplier"));
+ }
+ }
+}
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeRich.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeRich.java
new file mode 100644
index 0000000..b69ef1f
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeRich.java
@@ -0,0 +1,50 @@
+package com.willfp.reforges.reforges.reforges;
+
+import com.willfp.eco.core.events.EntityDeathByEntityEvent;
+import com.willfp.eco.util.ArrowUtils;
+import com.willfp.reforges.reforges.Reforge;
+import com.willfp.reforges.reforges.Reforges;
+import com.willfp.reforges.reforges.meta.ReforgeTarget;
+import com.willfp.reforges.reforges.util.ReforgeUtils;
+import com.willfp.reforges.vault.EconomyHandler;
+import org.bukkit.entity.Arrow;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.inventory.ItemStack;
+import org.jetbrains.annotations.NotNull;
+
+public class ReforgeRich extends Reforge {
+ public ReforgeRich() {
+ super("rich");
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.BOW;
+ }
+
+ @EventHandler
+ public void onKill(@NotNull final EntityDeathByEntityEvent event) {
+ if (!(event.getKiller() instanceof Arrow arrow)) {
+ return;
+ }
+
+ if (!(arrow.getShooter() instanceof Player player)) {
+ return;
+ }
+
+ ItemStack bow = ArrowUtils.getBow(arrow);
+
+ if (bow == null) {
+ return;
+ }
+
+ Reforge reforge = ReforgeUtils.getReforge(bow);
+
+ if (reforge == null || !reforge.equals(this)) {
+ return;
+ }
+
+ EconomyHandler.getInstance().depositPlayer(player, this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "money"));
+ }
+}
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStreamlined.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStreamlined.java
new file mode 100644
index 0000000..294d419
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeStreamlined.java
@@ -0,0 +1,28 @@
+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.Arrow;
+import org.bukkit.entity.LivingEntity;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import org.jetbrains.annotations.NotNull;
+
+public class ReforgeStreamlined extends Reforge {
+ public ReforgeStreamlined() {
+ super("streamlined");
+ }
+
+ @Override
+ public ReforgeTarget getTarget() {
+ return ReforgeTarget.BOW;
+ }
+
+ @Override
+ public void onArrowDamage(@NotNull final LivingEntity attacker,
+ @NotNull final LivingEntity victim,
+ @NotNull final Arrow arrow,
+ @NotNull final EntityDamageByEntityEvent event) {
+ event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "multiplier"));
+ }
+}
diff --git a/eco-core/core-plugin/src/main/resources/reforges/aerobic.yml b/eco-core/core-plugin/src/main/resources/reforges/aerobic.yml
new file mode 100644
index 0000000..9b775c3
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/aerobic.yml
@@ -0,0 +1,16 @@
+#
+# Aerobic Reforge
+#
+
+name: "Aerobic"
+enabled: true
+description: "Deal &a9%&r more damage when shot in the air"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ multiplier: 1.09 # Damage multiplier
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/reforges/lucky.yml b/eco-core/core-plugin/src/main/resources/reforges/lucky.yml
new file mode 100644
index 0000000..79fbc83
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/lucky.yml
@@ -0,0 +1,18 @@
+#
+# Lucky Reforge
+#
+
+name: "Lucky"
+enabled: true
+description: "&a5%&r chance to deal &a3x&r damage, or deal &a10%&r less damage"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ chance: 5
+ multiplier: 3
+ bad-multiplier: 0.9
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/reforges/rich.yml b/eco-core/core-plugin/src/main/resources/reforges/rich.yml
new file mode 100644
index 0000000..1be9c5d
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/rich.yml
@@ -0,0 +1,16 @@
+#
+# Rich Reforge
+#
+
+name: "Rich"
+enabled: true
+description: "Gain &e\$10&r for each mob you kill"
+
+stone-config:
+ requires-stone: true
+ texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmUzZjhjY2NlMzMxZGM0Mjg3NWY3OGY4YjUyMjNkZWNmNDg3ZTY4YTE4OTExMjJkZGYyZjEyZGJkNzMxODdjYSJ9fX0=
+ craftable: false
+ recipe: []
+
+config:
+ money: 10
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/reforges/streamlined.yml b/eco-core/core-plugin/src/main/resources/reforges/streamlined.yml
new file mode 100644
index 0000000..7bead04
--- /dev/null
+++ b/eco-core/core-plugin/src/main/resources/reforges/streamlined.yml
@@ -0,0 +1,16 @@
+#
+# Streamlined Reforge
+#
+
+name: "Streamlined"
+enabled: true
+description: "Deal &a4%&r more damage"
+
+stone-config:
+ requires-stone: false
+ texture: ''
+ craftable: false
+ recipe: []
+
+config:
+ multiplier: 1.04 # Damage multiplier
\ No newline at end of file