From ba1eb0a64b83b46287b5e0fd38eeebe8277b59a9 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 8 Mar 2021 20:30:30 +0000 Subject: [PATCH] Made potion effects follow conditions --- .../com/willfp/ecoarmor/EcoArmorPlugin.java | 2 - .../willfp/ecoarmor/conditions/Condition.java | 17 ++++++ .../ecoarmor/effects/util/EffectWatcher.java | 23 +++++++- .../sets/util/PotionEffectListener.java | 55 ------------------- 4 files changed, 39 insertions(+), 58 deletions(-) delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/PotionEffectListener.java diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java index 5912772..ef0209d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/EcoArmorPlugin.java @@ -15,7 +15,6 @@ import com.willfp.ecoarmor.effects.Effects; import com.willfp.ecoarmor.effects.util.EffectWatcher; import com.willfp.ecoarmor.sets.ArmorSets; import com.willfp.ecoarmor.sets.util.EffectiveDurabilityListener; -import com.willfp.ecoarmor.sets.util.PotionEffectListener; import com.willfp.ecoarmor.sets.util.PreventSkullPlaceListener; import com.willfp.ecoarmor.upgrades.Tiers; import com.willfp.ecoarmor.upgrades.listeners.AdvancementShardListener; @@ -141,7 +140,6 @@ public class EcoArmorPlugin extends AbstractEcoPlugin { return Arrays.asList( new CrystalListener(this), new AdvancementShardListener(this), - new PotionEffectListener(this), new EffectiveDurabilityListener(this), new DiscoverRecipeListener(this), new EffectWatcher(this), diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Condition.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Condition.java index c3e8f07..570e146 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Condition.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Condition.java @@ -8,6 +8,7 @@ import lombok.AccessLevel; import lombok.Getter; import org.bukkit.entity.Player; import org.bukkit.event.Listener; +import org.bukkit.potion.PotionEffect; import org.jetbrains.annotations.NotNull; public abstract class Condition implements Listener { @@ -77,8 +78,24 @@ public abstract class Condition implements Listener { effect.enable(player, strength); } } + + set.getPotionEffects().forEach((potionEffectType, integer) -> { + player.addPotionEffect(new PotionEffect(potionEffectType, 0x6fffffff, integer - 1, false, false, true)); + }); + + if (ArmorUtils.isWearingAdvanced(player)) { + set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> { + player.addPotionEffect(new PotionEffect(potionEffectType, 0x6fffffff, integer - 1, false, false, true)); + }); + } } else { set.getEffects().keySet().forEach(effect -> effect.disable(player)); + + for (PotionEffect effect : player.getActivePotionEffects()) { + if (effect.getDuration() >= 500000000) { + player.removePotionEffect(effect.getType()); + } + } } }, 1); } 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 b578425..4e2d9b9 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 @@ -10,6 +10,7 @@ import com.willfp.ecoarmor.sets.util.ArmorUtils; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.potion.PotionEffect; import org.jetbrains.annotations.NotNull; public class EffectWatcher extends PluginDependent implements Listener { @@ -34,6 +35,8 @@ public class EffectWatcher extends PluginDependent implements Listener { this.getPlugin().getScheduler().runLater(() -> { ArmorSet set = ArmorUtils.getSetOnPlayer(player); + boolean conditionsMet = ArmorUtils.areConditionsMet(player); + for (Effect effect : Effects.values()) { boolean enabled = true; @@ -55,7 +58,7 @@ public class EffectWatcher extends PluginDependent implements Listener { enabled = false; } - if (!ArmorUtils.areConditionsMet(player)) { + if (!conditionsMet) { enabled = false; } @@ -65,6 +68,24 @@ public class EffectWatcher extends PluginDependent implements Listener { effect.disable(player); } } + + if (set == null || !conditionsMet) { + for (PotionEffect effect : player.getActivePotionEffects()) { + if (effect.getDuration() >= 500000000) { + player.removePotionEffect(effect.getType()); + } + } + } else { + set.getPotionEffects().forEach((potionEffectType, integer) -> { + player.addPotionEffect(new PotionEffect(potionEffectType, 0x6fffffff, integer - 1, false, false, true)); + }); + + if (ArmorUtils.isWearingAdvanced(player)) { + set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> { + player.addPotionEffect(new PotionEffect(potionEffectType, 0x6fffffff, integer - 1, false, false, true)); + }); + } + } }, 1); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/PotionEffectListener.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/PotionEffectListener.java deleted file mode 100644 index 7e21c7b..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/sets/util/PotionEffectListener.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.willfp.ecoarmor.sets.util; - -import com.willfp.eco.util.events.armorequip.ArmorEquipEvent; -import com.willfp.eco.util.internal.PluginDependent; -import com.willfp.eco.util.plugin.AbstractEcoPlugin; -import com.willfp.ecoarmor.sets.ArmorSet; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.potion.PotionEffect; -import org.jetbrains.annotations.NotNull; - -public class PotionEffectListener extends PluginDependent implements Listener { - /** - * Create new potion effect listener for set effects. - * - * @param plugin EcoArmor. - */ - public PotionEffectListener(@NotNull final AbstractEcoPlugin plugin) { - super(plugin); - } - - /** - * Apply set potion effects. - * - * @param event The event to listen for. - */ - @EventHandler - public void onEquip(@NotNull final ArmorEquipEvent event) { - final Player player = event.getPlayer(); - - this.getPlugin().getScheduler().runLater(() -> { - for (PotionEffect effect : player.getActivePotionEffects()) { - if (effect.getDuration() >= 500000000) { - player.removePotionEffect(effect.getType()); - } - } - - ArmorSet set = ArmorUtils.getSetOnPlayer(player); - if (set == null) { - return; - } - - set.getPotionEffects().forEach((potionEffectType, integer) -> { - player.addPotionEffect(new PotionEffect(potionEffectType, 0x6fffffff, integer - 1, false, false, true)); - }); - - if (ArmorUtils.isWearingAdvanced(player)) { - set.getAdvancedPotionEffects().forEach((potionEffectType, integer) -> { - player.addPotionEffect(new PotionEffect(potionEffectType, 0x6fffffff, integer - 1, false, false, true)); - }); - } - }, 1); - } -}