diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/util/EffectWatcher.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/util/EffectWatcher.java index def6634..97a8447 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/util/EffectWatcher.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/effects/util/EffectWatcher.java @@ -2,6 +2,7 @@ package com.willfp.ecoarmor.effects.util; import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; +import com.willfp.eco.core.events.ArmorChangeEvent; import com.willfp.eco.core.events.ArmorEquipEvent; import com.willfp.ecoarmor.effects.Effect; import com.willfp.ecoarmor.effects.Effects; @@ -29,63 +30,60 @@ public class EffectWatcher extends PluginDependent implements Listene * @param event The event to listen for. */ @EventHandler - public void armorEquipListener(@NotNull final ArmorEquipEvent event) { + public void armorEquipListener(@NotNull final ArmorChangeEvent event) { Player player = event.getPlayer(); + ArmorSet set = ArmorUtils.getSetOnPlayer(player); - this.getPlugin().getScheduler().runLater(() -> { - ArmorSet set = ArmorUtils.getSetOnPlayer(player); + boolean conditionsMet = ArmorUtils.areConditionsMet(player); - boolean conditionsMet = ArmorUtils.areConditionsMet(player); + for (Effect effect : Effects.values()) { + boolean enabled = true; - for (Effect effect : Effects.values()) { - boolean enabled = true; + if (set == null) { + effect.disable(player); + continue; + } - if (set == null) { - effect.disable(player); - continue; - } + Object strength = set.getEffectStrength(effect); - Object strength = set.getEffectStrength(effect); - - if (ArmorUtils.isWearingAdvanced(player)) { - Object advancedStrength = set.getAdvancedEffectStrength(effect); - if (advancedStrength != null) { - strength = advancedStrength; - } - } - - if (strength == null) { - enabled = false; - } - - if (!conditionsMet) { - enabled = false; - } - - if (enabled) { - effect.enable(player, strength); - } else { - effect.disable(player); + if (ArmorUtils.isWearingAdvanced(player)) { + Object advancedStrength = set.getAdvancedEffectStrength(effect); + if (advancedStrength != null) { + strength = advancedStrength; } } - if (set == null || !conditionsMet) { - for (PotionEffect effect : player.getActivePotionEffects()) { - if (effect.getDuration() >= 0x5ffffff && effect.getDuration() <= 0x6ffffff) { - player.removePotionEffect(effect.getType()); - } - } + if (strength == null) { + enabled = false; + } + + if (!conditionsMet) { + enabled = false; + } + + if (enabled) { + effect.enable(player, strength); } else { - set.getPotionEffects().forEach((potionEffectType, integer) -> { + effect.disable(player); + } + } + + if (set == null || !conditionsMet) { + for (PotionEffect effect : player.getActivePotionEffects()) { + if (effect.getDuration() >= 0x5ffffff && effect.getDuration() <= 0x6ffffff) { + player.removePotionEffect(effect.getType()); + } + } + } else { + set.getPotionEffects().forEach((potionEffectType, integer) -> { + player.addPotionEffect(new PotionEffect(potionEffectType, 0x6ffffff, integer - 1, false, false, true)); + }); + + if (ArmorUtils.isWearingAdvanced(player)) { + set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> { player.addPotionEffect(new PotionEffect(potionEffectType, 0x6ffffff, integer - 1, false, false, true)); }); - - if (ArmorUtils.isWearingAdvanced(player)) { - set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> { - player.addPotionEffect(new PotionEffect(potionEffectType, 0x6ffffff, integer - 1, false, false, true)); - }); - } } - }, 1); + } } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java index 7c3f107..9e5c5a5 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/ArmorSet.java @@ -278,7 +278,11 @@ public class ArmorSet { if (!ArmorUtils.isAdvanced(itemStack)) { return false; } - return Objects.equals(this.getName(), ArmorUtils.getSetOnItem(test).getName()); + if (ArmorUtils.getSetOnItem(test) == null) { + return false; + } + + return Objects.equals(this, ArmorUtils.getSetOnItem(test)); }, itemStack).register(); } else { new CustomItem(this.getPlugin().getNamespacedKeyFactory().create("set_" + name.toLowerCase() + "_" + slot.name().toLowerCase()), test -> { @@ -288,7 +292,11 @@ public class ArmorSet { if (ArmorUtils.isAdvanced(itemStack)) { return false; } - return Objects.equals(this.getName(), ArmorUtils.getSetOnItem(test).getName()); + if (ArmorUtils.getSetOnItem(test) == null) { + return false; + } + + return Objects.equals(this, ArmorUtils.getSetOnItem(test)); }, itemStack).register(); }