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