mirror of
https://github.com/Auxilor/EcoJobs.git
synced 2025-12-22 08:29:24 +00:00
Moved integration
This commit is contained in:
@@ -14,10 +14,23 @@ import com.willfp.ecojobs.jobs.JobLevelListener
|
||||
import com.willfp.ecojobs.jobs.Jobs
|
||||
import com.willfp.ecojobs.jobs.PriceHandler
|
||||
import com.willfp.ecojobs.jobs.ResetOnQuitListener
|
||||
import com.willfp.ecojobs.libreforge.ConditionHasActiveJob
|
||||
import com.willfp.ecojobs.libreforge.ConditionHasJobLevel
|
||||
import com.willfp.ecojobs.libreforge.EffectGiveJobXp
|
||||
import com.willfp.ecojobs.libreforge.EffectJobXpMultiplier
|
||||
import com.willfp.ecojobs.libreforge.FilterJob
|
||||
import com.willfp.ecojobs.libreforge.TriggerGainJobXp
|
||||
import com.willfp.ecojobs.libreforge.TriggerJoinJob
|
||||
import com.willfp.ecojobs.libreforge.TriggerLeaveJob
|
||||
import com.willfp.ecojobs.libreforge.TriggerLevelUpJob
|
||||
import com.willfp.libreforge.SimpleProvidedHolder
|
||||
import com.willfp.libreforge.conditions.Conditions
|
||||
import com.willfp.libreforge.effects.Effects
|
||||
import com.willfp.libreforge.filters.Filters
|
||||
import com.willfp.libreforge.loader.LibreforgePlugin
|
||||
import com.willfp.libreforge.loader.configs.ConfigCategory
|
||||
import com.willfp.libreforge.registerHolderProvider
|
||||
import com.willfp.libreforge.triggers.Triggers
|
||||
import org.bukkit.event.Listener
|
||||
import java.util.regex.Pattern
|
||||
|
||||
@@ -33,6 +46,16 @@ class EcoJobsPlugin : LibreforgePlugin() {
|
||||
}
|
||||
|
||||
override fun handleEnable() {
|
||||
Conditions.register(ConditionHasJobLevel)
|
||||
Conditions.register(ConditionHasActiveJob)
|
||||
Effects.register(EffectJobXpMultiplier)
|
||||
Effects.register(EffectGiveJobXp)
|
||||
Triggers.register(TriggerGainJobXp)
|
||||
Triggers.register(TriggerLevelUpJob)
|
||||
Triggers.register(TriggerJoinJob)
|
||||
Triggers.register(TriggerLeaveJob)
|
||||
Filters.register(FilterJob)
|
||||
|
||||
registerHolderProvider { player ->
|
||||
player.activeJobs.map { it.getLevel(player.getJobLevel(it)) }.map {
|
||||
SimpleProvidedHolder(it)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecojobs.api.activeJobs
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.conditions.Condition
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
object ConditionHasActiveJob : Condition<NoCompileData>("has_active_job") {
|
||||
override val arguments = arguments {
|
||||
require("job", "You must specify the job!")
|
||||
}
|
||||
|
||||
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
|
||||
return player.activeJobs.any { it.id == config.getString("job").lowercase() }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecojobs.api.event.PlayerJobLevelUpEvent
|
||||
import com.willfp.ecojobs.api.getJobLevel
|
||||
import com.willfp.ecojobs.jobs.Jobs
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.conditions.Condition
|
||||
import com.willfp.libreforge.updateEffects
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.EventPriority
|
||||
|
||||
object ConditionHasJobLevel : Condition<NoCompileData>("has_job_level") {
|
||||
override val arguments = arguments {
|
||||
require("job", "You must specify the job!")
|
||||
require("level", "You must specify the level!")
|
||||
}
|
||||
|
||||
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
|
||||
return player.getJobLevel(
|
||||
Jobs.getByID(config.getString("job").lowercase()) ?: return false
|
||||
) >= config.getIntFromExpression("level", player)
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
fun handle(event: PlayerJobLevelUpEvent) {
|
||||
event.player.updateEffects()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecojobs.api.giveJobExperience
|
||||
import com.willfp.ecojobs.jobs.Jobs
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.effects.Effect
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
|
||||
object EffectGiveJobXp : Effect<NoCompileData>("give_job_xp") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER
|
||||
)
|
||||
|
||||
override val arguments = arguments {
|
||||
require("amount", "You must specify the amount of xp to give!")
|
||||
require("job", "You must specify the job to give xp for!")
|
||||
}
|
||||
|
||||
override fun onTrigger(config: Config, data: TriggerData, compileData: NoCompileData): Boolean {
|
||||
val player = data.player ?: return false
|
||||
|
||||
player.giveJobExperience(
|
||||
Jobs.getByID(config.getString("job")) ?: return false,
|
||||
config.getDoubleFromExpression("amount", player)
|
||||
)
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.ecojobs.api.event.PlayerJobExpGainEvent
|
||||
import com.willfp.ecojobs.jobs.Job
|
||||
import com.willfp.ecojobs.jobs.Jobs
|
||||
import com.willfp.libreforge.effects.templates.MultiMultiplierEffect
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object EffectJobXpMultiplier : MultiMultiplierEffect<Job>("job_xp_multiplier") {
|
||||
override val key = "jobs"
|
||||
|
||||
override fun getElement(key: String): Job? {
|
||||
return Jobs.getByID(key)
|
||||
}
|
||||
|
||||
override fun getAllElements(): Collection<Job> {
|
||||
return Jobs.values()
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerJobExpGainEvent) {
|
||||
event.amount *= getMultiplier(event.player, event.job)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecojobs.api.event.JobEvent
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.filters.Filter
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
|
||||
object FilterJob : Filter<NoCompileData, Collection<String>>("job") {
|
||||
override fun getValue(config: Config, data: TriggerData?, key: String): Collection<String> {
|
||||
return config.getStrings(key)
|
||||
}
|
||||
|
||||
override fun isMet(data: TriggerData, value: Collection<String>, compileData: NoCompileData): Boolean {
|
||||
val event = data.event as? JobEvent ?: return true
|
||||
|
||||
return value.any { jobName ->
|
||||
jobName.equals(event.job.id, ignoreCase = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.ecojobs.api.event.PlayerJobExpGainEvent
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object TriggerGainJobXp : Trigger("gain_job_xp") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER,
|
||||
TriggerParameter.LOCATION,
|
||||
TriggerParameter.EVENT
|
||||
)
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerJobExpGainEvent) {
|
||||
val player = event.player
|
||||
|
||||
this.dispatch(
|
||||
player,
|
||||
TriggerData(
|
||||
player = player,
|
||||
location = player.location,
|
||||
event = event,
|
||||
value = event.amount
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.ecojobs.api.event.PlayerJobJoinEvent
|
||||
import com.willfp.ecojobs.api.getJobLevel
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object TriggerJoinJob : Trigger("join_job") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER,
|
||||
TriggerParameter.LOCATION,
|
||||
TriggerParameter.EVENT
|
||||
)
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerJobJoinEvent) {
|
||||
val player = event.player as? Player ?: return
|
||||
|
||||
this.dispatch(
|
||||
player,
|
||||
TriggerData(
|
||||
player = player,
|
||||
location = player.location,
|
||||
event = event,
|
||||
value = player.getJobLevel(event.job).toDouble()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.ecojobs.api.event.PlayerJobLeaveEvent
|
||||
import com.willfp.ecojobs.api.getJobLevel
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object TriggerLeaveJob : Trigger("leave_job") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER,
|
||||
TriggerParameter.LOCATION,
|
||||
)
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerJobLeaveEvent) {
|
||||
val player = event.player as? Player ?: return
|
||||
|
||||
this.dispatch(
|
||||
player,
|
||||
TriggerData(
|
||||
player = player,
|
||||
location = player.location,
|
||||
value = player.getJobLevel(event.job).toDouble()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.willfp.ecojobs.libreforge
|
||||
|
||||
import com.willfp.ecojobs.api.event.PlayerJobLevelUpEvent
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object TriggerLevelUpJob : Trigger("level_up_job") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER,
|
||||
TriggerParameter.LOCATION,
|
||||
TriggerParameter.EVENT
|
||||
)
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerJobLevelUpEvent) {
|
||||
val player = event.player
|
||||
|
||||
this.dispatch(
|
||||
player,
|
||||
TriggerData(
|
||||
player = player,
|
||||
location = player.location,
|
||||
event = event,
|
||||
value = event.level.toDouble()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#libreforge-updater
|
||||
#Tue Mar 28 16:06:44 BST 2023
|
||||
#Tue Mar 28 18:28:20 BST 2023
|
||||
kotlin.code.style=official
|
||||
libreforge-version=4.0.0
|
||||
version=3.0.0
|
||||
|
||||
Reference in New Issue
Block a user