9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-04 15:41:36 +00:00

Moved integration

This commit is contained in:
Auxilor
2023-03-28 19:16:17 +01:00
parent 17b50d92df
commit ceca0adb52
13 changed files with 412 additions and 1 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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