From 8ca8018ab2889bfa06af952ea39bd4c389f2b98e Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 22 Jun 2022 12:50:51 +0100 Subject: [PATCH] Added filters to xp gain --- build.gradle | 2 +- .../src/main/kotlin/com/willfp/ecopets/pets/Pet.kt | 3 ++- .../main/kotlin/com/willfp/ecopets/pets/PetXPGain.kt | 10 +++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index ef9ee92..83982af 100644 --- a/build.gradle +++ b/build.gradle @@ -48,7 +48,7 @@ allprojects { dependencies { compileOnly 'com.willfp:eco:6.37.1' - implementation 'com.willfp:libreforge:3.68.0' + implementation 'com.willfp:libreforge:3.69.0' implementation 'org.joml:joml:1.10.4' compileOnly 'org.jetbrains:annotations:23.0.0' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/Pet.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/Pet.kt index ed9eb07..ce36c02 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/Pet.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/Pet.kt @@ -157,7 +157,8 @@ class Pet( trigger to PetXPGain( trigger, multiplier, - conditions + conditions, + it.getSubsection("filters") ) }.toMap() diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/PetXPGain.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/PetXPGain.kt index e6b7b0f..1f36011 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/PetXPGain.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/pets/PetXPGain.kt @@ -1,7 +1,9 @@ package com.willfp.ecopets.pets +import com.willfp.eco.core.config.interfaces.Config import com.willfp.libreforge.conditions.ConfiguredCondition import com.willfp.libreforge.events.TriggerPreProcessEvent +import com.willfp.libreforge.filters.ConfiguredFilter import com.willfp.libreforge.triggers.Trigger import org.bukkit.event.EventHandler import org.bukkit.event.Listener @@ -9,7 +11,8 @@ import org.bukkit.event.Listener data class PetXPGain( val trigger: Trigger, val multiplier: Double, - val conditions: Iterable + val conditions: Iterable, + val filters: Config ) object PetTriggerXPGainListener : Listener { @@ -18,6 +21,7 @@ object PetTriggerXPGainListener : Listener { val player = event.player val trigger = event.trigger val value = event.value + val data = event.data val pet = event.player.activePet ?: return @@ -27,6 +31,10 @@ object PetTriggerXPGainListener : Listener { return } + if (!ConfiguredFilter(xpGain.filters).matches(data)) { + return + } + player.givePetExperience( pet, value * xpGain.multiplier