diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Wisdom.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Wisdom.java index b41a0ed0..e46edc12 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Wisdom.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Wisdom.java @@ -9,7 +9,13 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; +import java.util.List; + public class Wisdom extends EcoEnchant { + + private static final List toPrevent = new ArrayList<>(); + public Wisdom() { super( "wisdom", EnchantmentType.NORMAL @@ -24,7 +30,13 @@ public class Wisdom extends EcoEnchant { return; } - if (!EnchantChecks.mainhand(player, this)) { + if (!this.areRequirementsMet(player)) { + return; + } + + int level = EnchantChecks.getMainhandLevel(player, this); + + if (level == 0) { return; } @@ -32,8 +44,18 @@ public class Wisdom extends EcoEnchant { return; } - int level = EnchantChecks.getMainhandLevel(player, this); + int newValue = toPrevent.contains(player) ? event.getExpChangeEvent().getAmount() : + (int) Math.ceil(event.getExpChangeEvent().getAmount() * + (1 + (level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-point")))); - event.getExpChangeEvent().setAmount((int) Math.ceil(event.getExpChangeEvent().getAmount() * (1 + (level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-point"))))); + event.getExpChangeEvent().setAmount(newValue); + + if (newValue > player.getExpToLevel()) { + if (!toPrevent.contains(player)){ + toPrevent.add(player); + } + } else { + toPrevent.remove(player); + } } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Intellect.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Intellect.java index 2f3282b7..cf6ca78b 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Intellect.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Intellect.java @@ -7,9 +7,16 @@ import com.willfp.ecoenchants.enchantments.meta.EnchantmentType; import com.willfp.ecoenchants.enchantments.util.EnchantChecks; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.PlayerDeathEvent; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; +import java.util.List; + public class Intellect extends EcoEnchant { + + private static final List toPrevent = new ArrayList<>(); + public Intellect() { super( "intellect", EnchantmentType.SPECIAL @@ -38,6 +45,18 @@ public class Intellect extends EcoEnchant { return; } - event.getExpChangeEvent().setAmount((int) Math.ceil(event.getExpChangeEvent().getAmount() * (1 + (level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-point"))))); + int newValue = toPrevent.contains(player) ? event.getExpChangeEvent().getAmount() : + (int) Math.ceil(event.getExpChangeEvent().getAmount() * + (1 + (level * this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "bonus-per-point")))); + + event.getExpChangeEvent().setAmount(newValue); + + if (newValue > player.getExpToLevel()) { + if (!toPrevent.contains(player)){ + toPrevent.add(player); + } + } else { + toPrevent.remove(player); + } } }