From f7c7f58132a6ec13eca7938d5c0bf474b7bf0b31 Mon Sep 17 00:00:00 2001 From: Jeck Date: Thu, 16 Feb 2023 06:13:21 -0800 Subject: [PATCH] Adds a self_placed block filter to check if the player placed the given block. --- .../com/willfp/libreforge/filters/Filters.kt | 2 ++ .../filters/filters/FilterSelfPlaced.kt | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 eco-api/src/main/kotlin/com/willfp/libreforge/filters/filters/FilterSelfPlaced.kt diff --git a/eco-api/src/main/kotlin/com/willfp/libreforge/filters/Filters.kt b/eco-api/src/main/kotlin/com/willfp/libreforge/filters/Filters.kt index b2f967d80..4ce027f2e 100644 --- a/eco-api/src/main/kotlin/com/willfp/libreforge/filters/Filters.kt +++ b/eco-api/src/main/kotlin/com/willfp/libreforge/filters/Filters.kt @@ -16,6 +16,7 @@ import com.willfp.libreforge.filters.filters.FilterOnlyBosses import com.willfp.libreforge.filters.filters.FilterOnlyNonBosses import com.willfp.libreforge.filters.filters.FilterPlayerName import com.willfp.libreforge.filters.filters.FilterPlayerPlaced +import com.willfp.libreforge.filters.filters.FilterSelfPlaced import com.willfp.libreforge.filters.filters.FilterPotionEffect import com.willfp.libreforge.filters.filters.FilterProjectiles import com.willfp.libreforge.filters.filters.FilterText @@ -39,6 +40,7 @@ object Filters { val ABOVE_HEALTH_PERCENT: Filter = FilterAboveHealthPercent val FULLY_GROWN: Filter = FilterFullyGrown val PLAYER_PLACED: Filter = FilterPlayerPlaced + val SELF_PLACED: Filter = FilterSelfPlaced val TEXT: Filter = FilterText val TEXT_CONTAINS: Filter = FilterTextContains val IS_BEHIND_VICTIM: Filter = FilterIsBehindVictim diff --git a/eco-api/src/main/kotlin/com/willfp/libreforge/filters/filters/FilterSelfPlaced.kt b/eco-api/src/main/kotlin/com/willfp/libreforge/filters/filters/FilterSelfPlaced.kt new file mode 100644 index 000000000..816128310 --- /dev/null +++ b/eco-api/src/main/kotlin/com/willfp/libreforge/filters/filters/FilterSelfPlaced.kt @@ -0,0 +1,17 @@ +package com.willfp.libreforge.filters.filters + +import com.willfp.eco.core.config.interfaces.Config +import com.willfp.eco.util.isPlacedBy +import com.willfp.libreforge.filters.Filter +import com.willfp.libreforge.triggers.TriggerData + +object FilterSelfPlaced : Filter() { + override fun passes(data: TriggerData, config: Config): Boolean { + val block = data.block ?: return true + val player = data.player ?: return true + + return config.withInverse("self_placed", Config::getBool) { + block.isPlacedBy(player) == it + } + } +}