mirror of
https://github.com/Auxilor/EcoSkills.git
synced 2026-01-04 15:41:36 +00:00
Moved integration
This commit is contained in:
@@ -21,6 +21,17 @@ import com.willfp.ecoskills.effects.Effects
|
||||
import com.willfp.ecoskills.effects.customEffects
|
||||
import com.willfp.ecoskills.integrations.EcoEnchantsEnchantingLeveller
|
||||
import com.willfp.ecoskills.integrations.enchantgui.EnchantGuiHandler
|
||||
import com.willfp.ecoskills.libreforge.ConditionHasSkillLevel
|
||||
import com.willfp.ecoskills.libreforge.EffectAddStat
|
||||
import com.willfp.ecoskills.libreforge.EffectAddStatTemporarily
|
||||
import com.willfp.ecoskills.libreforge.EffectGiveSkillXp
|
||||
import com.willfp.ecoskills.libreforge.EffectMultiplyAllStats
|
||||
import com.willfp.ecoskills.libreforge.EffectMultiplyStat
|
||||
import com.willfp.ecoskills.libreforge.EffectMultiplyStatTemporarily
|
||||
import com.willfp.ecoskills.libreforge.EffectSkillXpMultiplier
|
||||
import com.willfp.ecoskills.libreforge.FilterSkill
|
||||
import com.willfp.ecoskills.libreforge.TriggerGainSkillXp
|
||||
import com.willfp.ecoskills.libreforge.TriggerLevelUpSkill
|
||||
import com.willfp.ecoskills.placeholders.EcoSkillsTopPlaceholder
|
||||
import com.willfp.ecoskills.skills.CustomSkills
|
||||
import com.willfp.ecoskills.skills.SkillDisplayListener
|
||||
@@ -33,9 +44,12 @@ import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.ecoskills.stats.customStats
|
||||
import com.willfp.ecoskills.stats.modifier.StatModifierListener
|
||||
import com.willfp.libreforge.SimpleProvidedHolder
|
||||
import com.willfp.libreforge.conditions.Conditions
|
||||
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
|
||||
|
||||
class EcoSkillsPlugin : LibreforgePlugin() {
|
||||
@@ -48,6 +62,18 @@ class EcoSkillsPlugin : LibreforgePlugin() {
|
||||
}
|
||||
|
||||
override fun handleEnable() {
|
||||
com.willfp.libreforge.effects.Effects.register(EffectAddStat)
|
||||
com.willfp.libreforge.effects.Effects.register(EffectMultiplyStat)
|
||||
com.willfp.libreforge.effects.Effects.register(EffectSkillXpMultiplier)
|
||||
com.willfp.libreforge.effects.Effects.register(EffectGiveSkillXp)
|
||||
com.willfp.libreforge.effects.Effects.register(EffectMultiplyAllStats)
|
||||
com.willfp.libreforge.effects.Effects.register(EffectAddStatTemporarily)
|
||||
com.willfp.libreforge.effects.Effects.register(EffectMultiplyStatTemporarily)
|
||||
Conditions.register(ConditionHasSkillLevel)
|
||||
Triggers.register(TriggerGainSkillXp)
|
||||
Triggers.register(TriggerLevelUpSkill)
|
||||
Filters.register(FilterSkill)
|
||||
|
||||
EcoSkillsTopPlaceholder.register(this)
|
||||
Skills.update(this)
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.PlayerSkillLevelUpEvent
|
||||
import com.willfp.ecoskills.skills.Skills
|
||||
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 ConditionHasSkillLevel : Condition<NoCompileData>("has_skill_level") {
|
||||
override val arguments = arguments {
|
||||
require("skill", "You must specify the skill!")
|
||||
require("level", "You must specify the skill level!")
|
||||
}
|
||||
|
||||
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
|
||||
return EcoSkillsAPI.getInstance().getSkillLevel(
|
||||
player,
|
||||
Skills.getByID(config.getString("skill").lowercase()) ?: return false
|
||||
) >= config.getIntFromExpression("level", player)
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
|
||||
fun handle(event: PlayerSkillLevelUpEvent) {
|
||||
val player = event.player
|
||||
|
||||
player.updateEffects()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.ProvidedHolder
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.effects.Effect
|
||||
import com.willfp.libreforge.effects.Identifiers
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
object EffectAddStat : Effect<NoCompileData>("add_stat") {
|
||||
override val arguments = arguments {
|
||||
require("stat", "You must specify the stat!")
|
||||
require("amount", "You must specify the amount to add/remove!")
|
||||
}
|
||||
|
||||
override fun onEnable(player: Player, config: Config, identifiers: Identifiers, holder: ProvidedHolder, compileData: NoCompileData) {
|
||||
EcoSkillsAPI.getInstance().addStatModifier(
|
||||
player,
|
||||
PlayerStatModifier(
|
||||
identifiers.key,
|
||||
Stats.getByID(config.getString("stat")) ?: return,
|
||||
config.getIntFromExpression("amount", player)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onDisable(player: Player, identifiers: Identifiers, holder: ProvidedHolder) {
|
||||
EcoSkillsAPI.getInstance().removeStatModifier(
|
||||
player,
|
||||
identifiers.key
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.eco.util.NumberUtils
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.effects.Effect
|
||||
import com.willfp.libreforge.getIntFromExpression
|
||||
import com.willfp.libreforge.plugin
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
|
||||
object EffectAddStatTemporarily : Effect<NoCompileData>("add_stat_temporarily") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER
|
||||
)
|
||||
|
||||
override val arguments = arguments {
|
||||
require("stat", "You must specify the stat!")
|
||||
require("amount", "You must specify the amount to add/remove!")
|
||||
require("duration", "You must specify the duration for the boost!")
|
||||
}
|
||||
|
||||
override fun onTrigger(config: Config, data: TriggerData, compileData: NoCompileData): Boolean {
|
||||
val player = data.player ?: return false
|
||||
val stat = Stats.getByID(config.getString("stat")) ?: return false
|
||||
val amount = config.getIntFromExpression("amount", data)
|
||||
val key = plugin.namespacedKeyFactory.create("ast_${NumberUtils.randInt(0, 1000000)}")
|
||||
|
||||
EcoSkillsAPI.getInstance().addStatModifier(
|
||||
player,
|
||||
PlayerStatModifier(key, stat, amount)
|
||||
)
|
||||
|
||||
plugin.scheduler.runLater(config.getIntFromExpression("duration", data).toLong()) {
|
||||
EcoSkillsAPI.getInstance().removeStatModifier(player, key)
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.skills.Skills
|
||||
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 EffectGiveSkillXp : Effect<NoCompileData>("give_skill_xp") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER
|
||||
)
|
||||
|
||||
override val arguments = arguments {
|
||||
require("amount", "You must specify the amount of xp to give!")
|
||||
require("skill", "You must specify the skill to give xp for!")
|
||||
}
|
||||
|
||||
override fun onTrigger(config: Config, data: TriggerData, compileData: NoCompileData): Boolean {
|
||||
val player = data.player ?: return false
|
||||
|
||||
EcoSkillsAPI.getInstance().giveSkillExperience(
|
||||
player,
|
||||
Skills.getByID(config.getString("skill")) ?: Skills.COMBAT,
|
||||
config.getDoubleFromExpression("amount", player)
|
||||
)
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.modifier.ModifierOperation
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.ProvidedHolder
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.effects.Effect
|
||||
import com.willfp.libreforge.effects.Identifiers
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
object EffectMultiplyAllStats : Effect<NoCompileData>("multiply_all_stats") {
|
||||
override val arguments = arguments {
|
||||
require("multiplier", "You must specify the multiplier!")
|
||||
}
|
||||
|
||||
override fun onEnable(player: Player, config: Config, identifiers: Identifiers, holder: ProvidedHolder, compileData: NoCompileData) {
|
||||
val factory = identifiers.makeFactory()
|
||||
|
||||
for ((offset, stat) in Stats.values().withIndex()) {
|
||||
EcoSkillsAPI.getInstance().addStatModifier(
|
||||
player,
|
||||
PlayerStatModifier(
|
||||
factory.makeIdentifiers(offset).key,
|
||||
stat,
|
||||
config.getDoubleFromExpression("multiplier", player),
|
||||
ModifierOperation.MULTIPLY
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDisable(player: Player, identifiers: Identifiers, holder: ProvidedHolder) {
|
||||
val factory = identifiers.makeFactory()
|
||||
|
||||
for (offset in Stats.values().indices) {
|
||||
EcoSkillsAPI.getInstance().removeStatModifier(
|
||||
player,
|
||||
factory.makeIdentifiers(offset).key
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.modifier.ModifierOperation
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.ProvidedHolder
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.effects.Effect
|
||||
import com.willfp.libreforge.effects.Identifiers
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
object EffectMultiplyStat : Effect<NoCompileData>("multiply_stat") {
|
||||
override val arguments = arguments {
|
||||
require("stat", "You must specify the stat!")
|
||||
require("multiplier", "You must specify the multiplier!")
|
||||
}
|
||||
|
||||
override fun onEnable(player: Player, config: Config, identifiers: Identifiers, holder: ProvidedHolder, compileData: NoCompileData) {
|
||||
EcoSkillsAPI.getInstance().addStatModifier(
|
||||
player,
|
||||
PlayerStatModifier(
|
||||
identifiers.key,
|
||||
Stats.getByID(config.getString("stat")) ?: return,
|
||||
config.getDoubleFromExpression("multiplier", player),
|
||||
ModifierOperation.MULTIPLY
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onDisable(player: Player, identifiers: Identifiers, holder: ProvidedHolder) {
|
||||
EcoSkillsAPI.getInstance().removeStatModifier(
|
||||
player,
|
||||
identifiers.key
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.eco.util.NumberUtils
|
||||
import com.willfp.ecoskills.api.EcoSkillsAPI
|
||||
import com.willfp.ecoskills.api.modifier.ModifierOperation
|
||||
import com.willfp.ecoskills.api.modifier.PlayerStatModifier
|
||||
import com.willfp.ecoskills.stats.Stats
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.arguments
|
||||
import com.willfp.libreforge.effects.Effect
|
||||
import com.willfp.libreforge.getDoubleFromExpression
|
||||
import com.willfp.libreforge.getIntFromExpression
|
||||
import com.willfp.libreforge.plugin
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
|
||||
object EffectMultiplyStatTemporarily : Effect<NoCompileData>("multiply_stat_temporarily") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER
|
||||
)
|
||||
|
||||
override val arguments = arguments {
|
||||
require("stat", "You must specify the stat!")
|
||||
require("multiplier", "You must specify the multiplier!")
|
||||
require("duration", "You must specify the duration for the boost!")
|
||||
}
|
||||
|
||||
override fun onTrigger(config: Config, data: TriggerData, compileData: NoCompileData): Boolean {
|
||||
val player = data.player ?: return false
|
||||
val stat = Stats.getByID(config.getString("stat")) ?: return false
|
||||
val amount = config.getDoubleFromExpression("multiplier", data)
|
||||
val key = plugin.namespacedKeyFactory.create("mst_${NumberUtils.randInt(0, 1000000)}")
|
||||
|
||||
EcoSkillsAPI.getInstance().addStatModifier(
|
||||
player,
|
||||
PlayerStatModifier(key, stat, amount, ModifierOperation.MULTIPLY)
|
||||
)
|
||||
|
||||
plugin.scheduler.runLater(config.getIntFromExpression("duration", data).toLong()) {
|
||||
EcoSkillsAPI.getInstance().removeStatModifier(player, key)
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.ecoskills.api.PlayerSkillExpGainEvent
|
||||
import com.willfp.ecoskills.skills.Skill
|
||||
import com.willfp.ecoskills.skills.Skills
|
||||
import com.willfp.libreforge.effects.templates.MultiMultiplierEffect
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object EffectSkillXpMultiplier : MultiMultiplierEffect<Skill>("skill_xp_multiplier") {
|
||||
override val key = "skills"
|
||||
|
||||
override fun getElement(key: String): Skill? {
|
||||
return Skills.getByID(key)
|
||||
}
|
||||
|
||||
override fun getAllElements(): Collection<Skill> {
|
||||
return Skills.values()
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerSkillExpGainEvent) {
|
||||
val player = event.player
|
||||
|
||||
event.amount *= getMultiplier(player, event.skill)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.eco.core.config.interfaces.Config
|
||||
import com.willfp.ecoskills.api.SkillEvent
|
||||
import com.willfp.libreforge.NoCompileData
|
||||
import com.willfp.libreforge.filters.Filter
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
|
||||
object FilterSkill : Filter<NoCompileData, Collection<String>>("skill") {
|
||||
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? SkillEvent ?: return true
|
||||
|
||||
return value.any { skillName ->
|
||||
skillName.equals(event.skill.id, ignoreCase = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.ecoskills.api.PlayerSkillExpGainEvent
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object TriggerGainSkillXp : Trigger("gain_skill_xp") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER,
|
||||
TriggerParameter.LOCATION,
|
||||
TriggerParameter.EVENT
|
||||
)
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerSkillExpGainEvent) {
|
||||
val player = event.player
|
||||
|
||||
this.dispatch(
|
||||
player,
|
||||
TriggerData(
|
||||
player = player,
|
||||
location = player.location,
|
||||
event = event,
|
||||
value = event.amount
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.willfp.ecoskills.libreforge
|
||||
|
||||
import com.willfp.ecoskills.api.PlayerSkillLevelUpEvent
|
||||
import com.willfp.libreforge.triggers.Trigger
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import com.willfp.libreforge.triggers.TriggerParameter
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object TriggerLevelUpSkill : Trigger("level_up_skill") {
|
||||
override val parameters = setOf(
|
||||
TriggerParameter.PLAYER,
|
||||
TriggerParameter.LOCATION
|
||||
)
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
fun handle(event: PlayerSkillLevelUpEvent) {
|
||||
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 15:57:52 BST 2023
|
||||
#Tue Mar 28 18:28:26 BST 2023
|
||||
kotlin.code.style=official
|
||||
libreforge-version=4.0.0
|
||||
version=2.0.0
|
||||
|
||||
Reference in New Issue
Block a user