Added filters to xp gain
This commit is contained in:
@@ -157,7 +157,8 @@ class Pet(
|
||||
trigger to PetXPGain(
|
||||
trigger,
|
||||
multiplier,
|
||||
conditions
|
||||
conditions,
|
||||
it.getSubsection("filters")
|
||||
)
|
||||
}.toMap()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user