diff --git a/core/common/src/main/kotlin/com/willfp/libreforge/effects/impl/EffectSetBlock.kt b/core/common/src/main/kotlin/com/willfp/libreforge/effects/impl/EffectSetBlock.kt index 7a68eff86..77baa2db8 100644 --- a/core/common/src/main/kotlin/com/willfp/libreforge/effects/impl/EffectSetBlock.kt +++ b/core/common/src/main/kotlin/com/willfp/libreforge/effects/impl/EffectSetBlock.kt @@ -1,14 +1,15 @@ package com.willfp.libreforge.effects.impl +import com.willfp.eco.core.blocks.Blocks +import com.willfp.eco.core.blocks.TestableBlock import com.willfp.eco.core.config.interfaces.Config import com.willfp.libreforge.ViolationContext import com.willfp.libreforge.arguments import com.willfp.libreforge.effects.Effect import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerParameter -import org.bukkit.Material -object EffectSetBlock : Effect("set_block") { +object EffectSetBlock : Effect("set_block") { override val parameters = setOf( TriggerParameter.BLOCK ) @@ -17,16 +18,15 @@ object EffectSetBlock : Effect("set_block") { require("block", "You must specify the block!") } - override fun onTrigger(config: Config, data: TriggerData, compileData: Material?): Boolean { + override fun onTrigger(config: Config, data: TriggerData, compileData: TestableBlock): Boolean { val block = data.block ?: data.location?.block ?: return false - compileData ?: return false - block.type = compileData + compileData.place(block.location) return true } - override fun makeCompileData(config: Config, context: ViolationContext): Material? { - return Material.getMaterial(config.getString("block").uppercase()) + override fun makeCompileData(config: Config, context: ViolationContext): TestableBlock { + return Blocks.lookup(config.getString("block")) } } diff --git a/core/common/src/main/kotlin/com/willfp/libreforge/filters/impl/FilterBlocks.kt b/core/common/src/main/kotlin/com/willfp/libreforge/filters/impl/FilterBlocks.kt index c4b125d65..ba2368b16 100644 --- a/core/common/src/main/kotlin/com/willfp/libreforge/filters/impl/FilterBlocks.kt +++ b/core/common/src/main/kotlin/com/willfp/libreforge/filters/impl/FilterBlocks.kt @@ -1,19 +1,27 @@ package com.willfp.libreforge.filters.impl +import com.willfp.eco.core.blocks.Blocks +import com.willfp.eco.core.blocks.TestableBlock +import com.willfp.eco.core.blocks.matches import com.willfp.eco.core.config.interfaces.Config -import com.willfp.eco.util.containsIgnoreCase -import com.willfp.libreforge.NoCompileData +import com.willfp.libreforge.ViolationContext import com.willfp.libreforge.filters.Filter import com.willfp.libreforge.triggers.TriggerData -object FilterBlocks : Filter>("blocks") { +object FilterBlocks : Filter, Collection>("blocks") { override fun getValue(config: Config, data: TriggerData?, key: String): Collection { return config.getStrings(key) } - override fun isMet(data: TriggerData, value: Collection, compileData: NoCompileData): Boolean { + override fun isMet(data: TriggerData, value: Collection, compileData: Collection): Boolean { val block = data.block ?: return true - return value.containsIgnoreCase(block.type.name) + return compileData.matches(block) + } + + override fun makeCompileData( + config: Config, context: ViolationContext, values: Collection + ): Collection { + return values.map { Blocks.lookup(it) } } }