Fixed Intellect and Wisdom sometimes giving more exp than they should

This commit is contained in:
_OfTeN_
2022-01-17 23:40:39 +03:00
parent 90269bbf86
commit f164b76c62
2 changed files with 45 additions and 4 deletions

View File

@@ -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<Player> 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);
}
}
}

View File

@@ -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<Player> 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);
}
}
}