Added filters to xp gain

This commit is contained in:
Auxilor
2022-06-22 12:50:51 +01:00
parent 78e033990b
commit 8ca8018ab2
3 changed files with 12 additions and 3 deletions

View File

@@ -157,7 +157,8 @@ class Pet(
trigger to PetXPGain(
trigger,
multiplier,
conditions
conditions,
it.getSubsection("filters")
)
}.toMap()

View File

@@ -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<ConfiguredCondition>
val conditions: Iterable<ConfiguredCondition>,
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