From 7a1c45d20bcf36faec2494f2ea46c8bd289c8e99 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 20 Jul 2021 19:26:36 +0100 Subject: [PATCH] Added is-sneaking condition --- .../ecoarmor/conditions/Conditions.java | 2 + .../conditions/ConditionIsSneaking.java | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionIsSneaking.java 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 a36ad5d..ebd5973 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 @@ -15,6 +15,7 @@ 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; +import com.willfp.ecoarmor.conditions.conditions.ConditionIsSneaking; import lombok.experimental.UtilityClass; import org.jetbrains.annotations.NotNull; @@ -40,6 +41,7 @@ public class Conditions { 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(); + public static final Condition IS_SNEAKING = new ConditionIsSneaking(); /** * Get condition matching name.s diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionIsSneaking.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionIsSneaking.java new file mode 100644 index 0000000..9ba48ae --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoarmor/conditions/conditions/ConditionIsSneaking.java @@ -0,0 +1,46 @@ +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.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.jetbrains.annotations.NotNull; + +public class ConditionIsSneaking extends Condition { + public ConditionIsSneaking() { + super("is-sneaking", Boolean.class); + } + + @EventHandler( + priority = EventPriority.MONITOR, + ignoreCancelled = true + ) + public void listener(@NotNull final PlayerToggleSneakEvent event) { + Player player = event.getPlayer(); + + ArmorSet set = ArmorUtils.getSetOnPlayer(player); + + if (set == null) { + return; + } + + Boolean value = set.getConditionValue(this); + + if (value == null) { + return; + } + + evaluateEffects(player, value, set); + } + + @Override + public boolean isConditionMet(@NotNull final Player player, + @NotNull final Boolean value) { + return player.isSneaking(); + } +}