diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/EcoPetsPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/EcoPetsPlugin.kt index 0c7cb37..f1d21d0 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/EcoPetsPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/EcoPetsPlugin.kt @@ -30,7 +30,9 @@ 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.registerSpecificHolderProvider import com.willfp.libreforge.triggers.Triggers +import org.bukkit.entity.Player import org.bukkit.event.Listener class EcoPetsPlugin : LibreforgePlugin() { @@ -55,10 +57,10 @@ class EcoPetsPlugin : LibreforgePlugin() { Triggers.register(TriggerGainPetXp) Triggers.register(TriggerLevelUpPet) Filters.register(FilterPet) - - registerHolderProvider { - it.activePetLevel?.let { l -> - listOf(SimpleProvidedHolder(l)) + + registerSpecificHolderProvider { + it.activePetLevel?.let { p -> + listOf(SimpleProvidedHolder(p)) } ?: emptyList() } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasActivePet.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasActivePet.kt index 276fbde..662145f 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasActivePet.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasActivePet.kt @@ -3,9 +3,12 @@ package com.willfp.ecopets.libreforge import com.willfp.eco.core.config.interfaces.Config import com.willfp.ecopets.api.EcoPetsAPI import com.willfp.ecopets.pets.Pets +import com.willfp.libreforge.Dispatcher import com.willfp.libreforge.NoCompileData +import com.willfp.libreforge.ProvidedHolder import com.willfp.libreforge.arguments import com.willfp.libreforge.conditions.Condition +import com.willfp.libreforge.get import org.bukkit.entity.Player object ConditionHasActivePet : Condition("has_active_pet") { @@ -13,11 +16,14 @@ object ConditionHasActivePet : Condition("has_active_pet") { require("pet", "You must specify the pet!") } - override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean { + override fun isMet( + dispatcher: Dispatcher<*>, + config: Config, + holder: ProvidedHolder, + compileData: NoCompileData + ): Boolean { + val player = dispatcher.get() ?: return false + return EcoPetsAPI.instance.getActivePet(player) == Pets.getByID(config.getString("pet").lowercase()) -// return EcoPetsAPI.instance.hasPet( -// player, -// Pets.getByID(config.getString("pet").lowercase()) ?: return false -// ) } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPet.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPet.kt index e133724..57446d5 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPet.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPet.kt @@ -3,12 +3,22 @@ package com.willfp.ecopets.libreforge import com.willfp.eco.core.config.interfaces.Config import com.willfp.ecopets.api.EcoPetsAPI import com.willfp.ecopets.pets.Pets +import com.willfp.libreforge.Dispatcher import com.willfp.libreforge.NoCompileData +import com.willfp.libreforge.ProvidedHolder import com.willfp.libreforge.conditions.Condition +import com.willfp.libreforge.get import org.bukkit.entity.Player object ConditionHasPet : Condition("has_pet") { - override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean { + override fun isMet( + dispatcher: Dispatcher<*>, + config: Config, + holder: ProvidedHolder, + compileData: NoCompileData + ): Boolean { + val player = dispatcher.get() ?: return false + return EcoPetsAPI.instance.hasPet( player, Pets.getByID(config.getString("pet").lowercase()) ?: return false diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPetLevel.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPetLevel.kt index 4e3b796..278ef43 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPetLevel.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/ConditionHasPetLevel.kt @@ -4,9 +4,13 @@ import com.willfp.eco.core.config.interfaces.Config import com.willfp.ecopets.api.EcoPetsAPI import com.willfp.ecopets.api.event.PlayerPetLevelUpEvent import com.willfp.ecopets.pets.Pets +import com.willfp.libreforge.Dispatcher import com.willfp.libreforge.NoCompileData +import com.willfp.libreforge.ProvidedHolder import com.willfp.libreforge.arguments import com.willfp.libreforge.conditions.Condition +import com.willfp.libreforge.get +import com.willfp.libreforge.toDispatcher import com.willfp.libreforge.updateEffects import org.bukkit.entity.Player import org.bukkit.event.EventHandler @@ -20,10 +24,17 @@ object ConditionHasPetLevel : Condition("has_pet_level") { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) fun handle(event: PlayerPetLevelUpEvent) { - event.player.updateEffects() + event.player.toDispatcher().updateEffects() } - override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean { + override fun isMet( + dispatcher: Dispatcher<*>, + config: Config, + holder: ProvidedHolder, + compileData: NoCompileData + ): Boolean { + val player = dispatcher.get() ?: return false + return EcoPetsAPI.instance.getPetLevel( player, Pets.getByID(config.getString("pet").lowercase()) ?: return false diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/EffectPetXpMultiplier.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/EffectPetXpMultiplier.kt index 5db67b6..cce70c3 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/EffectPetXpMultiplier.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/EffectPetXpMultiplier.kt @@ -4,6 +4,7 @@ import com.willfp.ecopets.api.event.PlayerPetExpGainEvent import com.willfp.ecopets.pets.Pet import com.willfp.ecopets.pets.Pets import com.willfp.libreforge.effects.templates.MultiMultiplierEffect +import com.willfp.libreforge.toDispatcher import org.bukkit.event.EventHandler object EffectPetXpMultiplier : MultiMultiplierEffect("pet_xp_multiplier") { @@ -21,6 +22,6 @@ object EffectPetXpMultiplier : MultiMultiplierEffect("pet_xp_multiplier") { fun handle(event: PlayerPetExpGainEvent) { val player = event.player - event.amount *= getMultiplier(player, event.pet) + event.amount *= getMultiplier(player.toDispatcher(), event.pet) } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerGainPetXp.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerGainPetXp.kt index d2b5a92..ca9600d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerGainPetXp.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerGainPetXp.kt @@ -1,6 +1,7 @@ package com.willfp.ecopets.libreforge import com.willfp.ecopets.api.event.PlayerPetExpGainEvent +import com.willfp.libreforge.toDispatcher import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerParameter @@ -18,7 +19,7 @@ object TriggerGainPetXp : Trigger("gain_pet_xp") { val player = event.player this.dispatch( - player, + player.toDispatcher(), TriggerData( player = player, location = player.location, diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerLevelUpPet.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerLevelUpPet.kt index 857fd35..e769327 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerLevelUpPet.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecopets/libreforge/TriggerLevelUpPet.kt @@ -1,6 +1,7 @@ package com.willfp.ecopets.libreforge import com.willfp.ecopets.api.event.PlayerPetLevelUpEvent +import com.willfp.libreforge.toDispatcher import com.willfp.libreforge.triggers.Trigger import com.willfp.libreforge.triggers.TriggerData import com.willfp.libreforge.triggers.TriggerParameter @@ -18,7 +19,7 @@ object TriggerLevelUpPet : Trigger("level_up_pet") { val player = event.player this.dispatch( - player, + player.toDispatcher(), TriggerData( player = player, location = player.location, diff --git a/gradle.properties b/gradle.properties index e8c4874..5b6facb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ #libreforge-updater -#Sun Nov 19 14:14:30 GMT 2023 +#Tue Nov 21 22:41:48 GMT 2023 kotlin.code.style=official -libreforge-version=4.43.1 -version=2.43.1 +libreforge-version=4.44.0 +version=2.44.0