Moved integration

This commit is contained in:
Auxilor
2023-03-28 19:15:05 +01:00
parent 55a3b830ba
commit e1e4b403e7
9 changed files with 214 additions and 1 deletions

View File

@@ -5,6 +5,13 @@ import com.willfp.eco.core.integrations.IntegrationLoader
import com.willfp.eco.core.placeholder.PlayerPlaceholder
import com.willfp.ecopets.commands.CommandEcoPets
import com.willfp.ecopets.commands.CommandPets
import com.willfp.ecopets.libreforge.ConditionHasActivePet
import com.willfp.ecopets.libreforge.ConditionHasPetLevel
import com.willfp.ecopets.libreforge.EffectGivePetXp
import com.willfp.ecopets.libreforge.EffectPetXpMultiplier
import com.willfp.ecopets.libreforge.FilterPet
import com.willfp.ecopets.libreforge.TriggerGainPetXp
import com.willfp.ecopets.libreforge.TriggerLevelUpPet
import com.willfp.ecopets.pets.DiscoverRecipeListener
import com.willfp.ecopets.pets.PetDisplay
import com.willfp.ecopets.pets.PetLevelListener
@@ -15,9 +22,13 @@ import com.willfp.ecopets.pets.activePetLevel
import com.willfp.ecopets.pets.entity.ModelEnginePetEntity
import com.willfp.ecopets.pets.entity.PetEntity
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
class EcoPetsPlugin : LibreforgePlugin() {
@@ -34,6 +45,14 @@ class EcoPetsPlugin : LibreforgePlugin() {
}
override fun handleEnable() {
Conditions.register(ConditionHasPetLevel)
Conditions.register(ConditionHasActivePet)
Effects.register(EffectPetXpMultiplier)
Effects.register(EffectGivePetXp)
Triggers.register(TriggerGainPetXp)
Triggers.register(TriggerLevelUpPet)
Filters.register(FilterPet)
registerHolderProvider {
it.activePetLevel?.let { l ->
listOf(SimpleProvidedHolder(l))

View File

@@ -0,0 +1,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.NoCompileData
import com.willfp.libreforge.arguments
import com.willfp.libreforge.conditions.Condition
import org.bukkit.entity.Player
object ConditionHasActivePet : Condition<NoCompileData>("has_active_pet") {
override val arguments = arguments {
require("pet", "You must specify the pet!")
}
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
return EcoPetsAPI.instance.hasPet(
player,
Pets.getByID(config.getString("pet").lowercase()) ?: return false
)
}
}

View File

@@ -0,0 +1,32 @@
package com.willfp.ecopets.libreforge
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.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 ConditionHasPetLevel : Condition<NoCompileData>("has_pet_level") {
override val arguments = arguments {
require("pet", "You must specify the pet!")
require("level", "You must specify the level!")
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
fun handle(event: PlayerPetLevelUpEvent) {
event.player.updateEffects()
}
override fun isMet(player: Player, config: Config, compileData: NoCompileData): Boolean {
return EcoPetsAPI.instance.getPetLevel(
player,
Pets.getByID(config.getString("pet").lowercase()) ?: return false
) >= config.getIntFromExpression("level", player)
}
}

View File

@@ -0,0 +1,33 @@
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.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 EffectGivePetXp : Effect<NoCompileData>("give_pet_xp") {
override val parameters = setOf(
TriggerParameter.PLAYER
)
override val arguments = arguments {
require("amount", "You must specify the amount of xp to give!")
require("pet", "You must specify the pet to give xp for!")
}
override fun onTrigger(config: Config, data: TriggerData, compileData: NoCompileData): Boolean {
val player = data.player ?: return false
EcoPetsAPI.instance.givePetExperience(
player,
Pets.getByID(config.getString("pet")) ?: return false,
config.getDoubleFromExpression("amount", player)
)
return true
}
}

View File

@@ -0,0 +1,26 @@
package com.willfp.ecopets.libreforge
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 org.bukkit.event.EventHandler
object EffectPetXpMultiplier : MultiMultiplierEffect<Pet>("pet_xp_multiplier") {
override val key = "pets"
override fun getElement(key: String): Pet? {
return Pets.getByID(key.lowercase())
}
override fun getAllElements(): Collection<Pet> {
return Pets.values()
}
@EventHandler(ignoreCancelled = true)
fun handle(event: PlayerPetExpGainEvent) {
val player = event.player
event.amount *= getMultiplier(player, event.pet)
}
}

View File

@@ -0,0 +1,21 @@
package com.willfp.ecopets.libreforge
import com.willfp.eco.core.config.interfaces.Config
import com.willfp.ecopets.api.event.PetEvent
import com.willfp.libreforge.NoCompileData
import com.willfp.libreforge.filters.Filter
import com.willfp.libreforge.triggers.TriggerData
object FilterPet : Filter<NoCompileData, Collection<String>>("pet") {
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? PetEvent ?: return false
return value.any { petName ->
petName.equals(event.pet.id, ignoreCase = true)
}
}
}

View File

@@ -0,0 +1,30 @@
package com.willfp.ecopets.libreforge
import com.willfp.ecopets.api.event.PlayerPetExpGainEvent
import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter
import org.bukkit.event.EventHandler
object TriggerGainPetXp : Trigger("gain_pet_xp") {
override val parameters = setOf(
TriggerParameter.PLAYER,
TriggerParameter.LOCATION,
TriggerParameter.EVENT
)
@EventHandler(ignoreCancelled = true)
fun handle(event: PlayerPetExpGainEvent) {
val player = event.player
this.dispatch(
player,
TriggerData(
player = player,
location = player.location,
event = event,
value = event.amount
)
)
}
}

View File

@@ -0,0 +1,30 @@
package com.willfp.ecopets.libreforge
import com.willfp.ecopets.api.event.PlayerPetLevelUpEvent
import com.willfp.libreforge.triggers.Trigger
import com.willfp.libreforge.triggers.TriggerData
import com.willfp.libreforge.triggers.TriggerParameter
import org.bukkit.event.EventHandler
object TriggerLevelUpPet : Trigger("level_up_pet") {
override val parameters = setOf(
TriggerParameter.PLAYER,
TriggerParameter.LOCATION,
TriggerParameter.EVENT
)
@EventHandler(ignoreCancelled = true)
fun handle(event: PlayerPetLevelUpEvent) {
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:58:17 BST 2023
#Tue Mar 28 18:28:39 BST 2023
kotlin.code.style=official
libreforge-version=4.0.0
version=2.0.0