diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt index 752f8b9..9ded74a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/Job.kt @@ -33,6 +33,7 @@ import com.willfp.libreforge.conditions.Conditions import com.willfp.libreforge.counters.Counters import com.willfp.libreforge.effects.EffectList import com.willfp.libreforge.effects.Effects +import com.willfp.libreforge.effects.executors.impl.NormalExecutorFactory import org.bukkit.Bukkit import org.bukkit.OfflinePlayer import org.bukkit.configuration.InvalidConfigurationException @@ -66,6 +67,18 @@ class Job( PriceEconomy(config.getDouble("leave-price")), "" ) + val joinEffects = Effects.compileChain( + config.getSubsections("join-effects"), + NormalExecutorFactory.create(), + ViolationContext(plugin, "Job $id join-effects") + ) + + val leaveEffects = Effects.compileChain( + config.getSubsections("leave-effects"), + NormalExecutorFactory.create(), + ViolationContext(plugin, "Job $id leave-effects") + ) + val levelKey: PersistentDataKey = PersistentDataKey( EcoJobsPlugin.instance.namespacedKeyFactory.create("${id}_level"), PersistentDataKeyType.INT, diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/PriceHandler.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/PriceHandler.kt index 7c64df2..091fe27 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/PriceHandler.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecojobs/jobs/PriceHandler.kt @@ -2,6 +2,7 @@ package com.willfp.ecojobs.jobs import com.willfp.ecojobs.api.event.PlayerJobJoinEvent import com.willfp.ecojobs.api.event.PlayerJobLeaveEvent +import com.willfp.libreforge.toDispatcher import org.bukkit.entity.Player import org.bukkit.event.EventHandler import org.bukkit.event.EventPriority @@ -23,6 +24,7 @@ object PriceHandler : Listener { } price.pay(player) + job.joinEffects?.trigger(player.toDispatcher()) } @EventHandler( @@ -40,5 +42,6 @@ object PriceHandler : Listener { } price.pay(player) + job.leaveEffects?.trigger(player.toDispatcher()) } }