diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java index 17f46a0..2817f1e 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java @@ -21,6 +21,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -85,30 +86,38 @@ public class ReforgeGUI { ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); double cost = plugin.getConfigYml().getDouble("reforge.cost"); - int reforges = ReforgeUtils.getReforges(previous); - cost *= Math.pow(plugin.getConfigYml().getDouble("reforge.cost-exponent"), reforges); - double finalCost = cost; + if (status == ReforgeStatus.ALLOW) { + ItemStack item = menu.getCaptiveItems(player).get(0); + int reforges = ReforgeUtils.getReforges(item); + cost *= Math.pow(plugin.getConfigYml().getDouble("reforge.cost-exponent"), reforges); + } switch (status) { case INVALID_ITEM -> { previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.invalid-item.material").toUpperCase()))); meta.setDisplayName(plugin.getConfigYml().getString("gui.invalid-item.name")); - List lore = plugin.getConfigYml().getStrings("gui.invalid-item.lore"); - lore.replaceAll(s -> s.replace("%cost%", NumberUtils.format(finalCost))); + List lore = new ArrayList<>(); + for (String string : plugin.getConfigYml().getStrings("gui.invalid-item.lore")) { + lore.add(string.replace("%cost%", NumberUtils.format(cost))); + } meta.setLore(lore); } case ALLOW -> { previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.allow.material").toUpperCase()))); meta.setDisplayName(plugin.getConfigYml().getString("gui.allow.name")); - List lore = plugin.getConfigYml().getStrings("gui.allow.lore"); - lore.replaceAll(s -> s.replace("%cost%", NumberUtils.format(finalCost))); + List lore = new ArrayList<>(); + for (String string : plugin.getConfigYml().getStrings("gui.allow.lore")) { + lore.add(string.replace("%cost%", NumberUtils.format(cost))); + } meta.setLore(lore); } default -> { previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.no-item.material").toUpperCase()))); meta.setDisplayName(plugin.getConfigYml().getString("gui.no-item.name")); - List lore = plugin.getConfigYml().getStrings("gui.no-item.lore"); - lore.replaceAll(s -> s.replace("%cost%", NumberUtils.format(finalCost))); + List lore = new ArrayList<>(); + for (String string : plugin.getConfigYml().getStrings("gui.no-item.lore")) { + lore.add(string.replace("%cost%", NumberUtils.format(cost))); + } meta.setLore(lore); } } 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 36b6555..99fada9 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 @@ -5,6 +5,7 @@ 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.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.ReforgeWise; @@ -26,6 +27,7 @@ public class Reforges { public static final Reforge LIGHT = new ReforgeLight(); public static final Reforge WISE = new ReforgeWise(); public static final Reforge DYNAMIC = new ReforgeDynamic(); + public static final Reforge GRAVITATED = new ReforgeGravitated(); /** * Get all registered {@link Reforge}s. diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeGravitated.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeGravitated.java new file mode 100644 index 0000000..f2c57f1 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/reforges/ReforgeGravitated.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.LivingEntity; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.jetbrains.annotations.NotNull; + +public class ReforgeGravitated extends Reforge { + public ReforgeGravitated() { + super("gravitated"); + } + + @Override + public ReforgeTarget getTarget() { + return ReforgeTarget.MELEE; + } + + @Override + public void onMeleeAttack(@NotNull final LivingEntity attacker, + @NotNull final LivingEntity victim, + @NotNull final EntityDamageByEntityEvent event) { + if (attacker.getVelocity().getY() < 0) { + event.setDamage(event.getDamage() * this.getConfig().getDouble(Reforges.CONFIG_LOCATION + "crit-multiplier")); + } + } +} diff --git a/eco-core/core-plugin/src/main/resources/reforges/gravitated.yml b/eco-core/core-plugin/src/main/resources/reforges/gravitated.yml new file mode 100644 index 0000000..9ab55d4 --- /dev/null +++ b/eco-core/core-plugin/src/main/resources/reforges/gravitated.yml @@ -0,0 +1,10 @@ +# +# Gravitated Reforge +# + +name: "Gravitated" +enabled: true +description: "Deal &a8%&r more critical damage" + +config: + crit-multiplier: 1.08 \ No newline at end of file