9
0
mirror of https://github.com/Auxilor/EcoJobs.git synced 2025-12-22 16:39:34 +00:00

Moved integration

This commit is contained in:
Auxilor
2023-03-28 19:13:24 +01:00
parent 1753e47534
commit b9e67b55ec
11 changed files with 272 additions and 1 deletions

View File

@@ -14,10 +14,23 @@ import com.willfp.ecojobs.jobs.JobLevelListener
import com.willfp.ecojobs.jobs.Jobs import com.willfp.ecojobs.jobs.Jobs
import com.willfp.ecojobs.jobs.PriceHandler import com.willfp.ecojobs.jobs.PriceHandler
import com.willfp.ecojobs.jobs.ResetOnQuitListener 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.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.LibreforgePlugin
import com.willfp.libreforge.loader.configs.ConfigCategory import com.willfp.libreforge.loader.configs.ConfigCategory
import com.willfp.libreforge.registerHolderProvider import com.willfp.libreforge.registerHolderProvider
import com.willfp.libreforge.triggers.Triggers
import org.bukkit.event.Listener import org.bukkit.event.Listener
import java.util.regex.Pattern import java.util.regex.Pattern
@@ -33,6 +46,16 @@ class EcoJobsPlugin : LibreforgePlugin() {
} }
override fun handleEnable() { 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 -> registerHolderProvider { player ->
player.activeJobs.map { it.getLevel(player.getJobLevel(it)) }.map { player.activeJobs.map { it.getLevel(player.getJobLevel(it)) }.map {
SimpleProvidedHolder(it) SimpleProvidedHolder(it)

View File

@@ -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() }
}
}

View File

@@ -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()
}
}

View File

@@ -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
}
}

View File

@@ -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)
}
}

View File

@@ -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)
}
}
}

View File

@@ -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
)
)
}
}

View File

@@ -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()
)
)
}
}

View File

@@ -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()
)
)
}
}

View File

@@ -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()
)
)
}
}

View File

@@ -1,5 +1,5 @@
#libreforge-updater #libreforge-updater
#Tue Mar 28 16:06:44 BST 2023 #Tue Mar 28 18:28:20 BST 2023
kotlin.code.style=official kotlin.code.style=official
libreforge-version=4.0.0 libreforge-version=4.0.0
version=3.0.0 version=3.0.0