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 a20c403..a749cc4 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 @@ -13,9 +13,7 @@ import com.willfp.ecoarmor.display.ArmorDisplay; import com.willfp.ecoarmor.effects.Effect; import com.willfp.ecoarmor.effects.Effects; import com.willfp.ecoarmor.effects.util.EffectWatcher; -import com.willfp.ecoarmor.sets.ArmorSet; import com.willfp.ecoarmor.sets.ArmorSets; -import com.willfp.ecoarmor.sets.meta.ArmorSlot; import com.willfp.ecoarmor.sets.util.EffectiveDurabilityListener; import com.willfp.ecoarmor.sets.util.PreventSkullPlaceListener; import com.willfp.ecoarmor.upgrades.Tiers; @@ -23,7 +21,6 @@ import com.willfp.ecoarmor.upgrades.listeners.AdvancementShardListener; import com.willfp.ecoarmor.upgrades.listeners.CrystalListener; import com.willfp.ecoarmor.util.DiscoverRecipeListener; import lombok.Getter; -import org.bukkit.Bukkit; import org.bukkit.event.Listener; import org.jetbrains.annotations.Nullable; @@ -63,6 +60,7 @@ public class EcoArmorPlugin extends EcoPlugin { Effects.values().stream().filter(Effect::isEnabled).forEach(effect -> this.getEventManager().registerListener(effect)); Conditions.values().forEach(condition -> this.getEventManager().registerListener(condition)); + this.getScheduler().runTimer((Runnable) Conditions.HAS_PERMISSION, 100, 100); } /** diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Conditions.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Conditions.java index e607f5e..a36ad5d 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Conditions.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/Conditions.java @@ -11,6 +11,7 @@ import com.willfp.ecoarmor.conditions.conditions.ConditionBelowHealthPercent; import com.willfp.ecoarmor.conditions.conditions.ConditionBelowHungerPercent; import com.willfp.ecoarmor.conditions.conditions.ConditionBelowXPLevel; import com.willfp.ecoarmor.conditions.conditions.ConditionBelowY; +import com.willfp.ecoarmor.conditions.conditions.ConditionHasPermission; import com.willfp.ecoarmor.conditions.conditions.ConditionInBiome; import com.willfp.ecoarmor.conditions.conditions.ConditionInWater; import com.willfp.ecoarmor.conditions.conditions.ConditionInWorld; @@ -38,6 +39,7 @@ public class Conditions { public static final Condition ABOVE_HUNGER_PERCENT = new ConditionAboveHungerPercent(); public static final Condition BELOW_HUNGER_PERCENT = new ConditionBelowHungerPercent(); public static final Condition IN_BIOME = new ConditionInBiome(); + public static final Condition HAS_PERMISSION = new ConditionHasPermission(); /** * Get condition matching name.s diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionHasPermission.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionHasPermission.java new file mode 100644 index 0000000..5581a23 --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionHasPermission.java @@ -0,0 +1,39 @@ +package com.willfp.ecoarmor.conditions.conditions; + +import com.willfp.ecoarmor.conditions.Condition; +import com.willfp.ecoarmor.sets.ArmorSet; +import com.willfp.ecoarmor.sets.util.ArmorUtils; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public class ConditionHasPermission extends Condition implements Runnable { + public ConditionHasPermission() { + super("has-permission", String.class); + } + + @Override + public void run() { + for (Player player : Bukkit.getOnlinePlayers()) { + ArmorSet set = ArmorUtils.getSetOnPlayer(player); + + if (set == null) { + return; + } + + String value = set.getConditionValue(this); + + if (value == null) { + return; + } + + evaluateEffects(player, value, set); + } + } + + @Override + public boolean isConditionMet(@NotNull final Player player, + @NotNull final String value) { + return player.hasPermission(value); + } +}