From f0a2d32b95610a1224783fe5bf111f13ffe17103 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 28 Mar 2023 18:58:58 +0100 Subject: [PATCH] Moved integration --- .../com/willfp/ecobosses/EcoBossesPlugin.kt | 9 ++++++ .../EffectBossDropChanceMultiplier.kt | 28 ++++++++++++++++ .../ecobosses/libreforge/TriggerKillBoss.kt | 32 +++++++++++++++++++ .../ecobosses/libreforge/TriggerSpawnBoss.kt | 28 ++++++++++++++++ gradle.properties | 2 +- 5 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/EffectBossDropChanceMultiplier.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerKillBoss.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerSpawnBoss.kt diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/EcoBossesPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/EcoBossesPlugin.kt index c73a283..5f874d6 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/EcoBossesPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/EcoBossesPlugin.kt @@ -12,6 +12,9 @@ import com.willfp.ecobosses.defence.ImmunitiesHandler import com.willfp.ecobosses.defence.MountHandler import com.willfp.ecobosses.defence.PickupHandler import com.willfp.ecobosses.integrations.levelledmobs.IntegrationLevelledMobs +import com.willfp.ecobosses.libreforge.EffectBossDropChanceMultiplier +import com.willfp.ecobosses.libreforge.TriggerKillBoss +import com.willfp.ecobosses.libreforge.TriggerSpawnBoss import com.willfp.ecobosses.lifecycle.CompatibilityListeners import com.willfp.ecobosses.lifecycle.ConsoleLoggers import com.willfp.ecobosses.lifecycle.DeathListeners @@ -21,9 +24,11 @@ import com.willfp.ecobosses.spawn.SpawnEggHandler import com.willfp.ecobosses.spawn.SpawnTotemHandler import com.willfp.ecobosses.util.DiscoverRecipeListener import com.willfp.ecobosses.util.TopDamagerListener +import com.willfp.libreforge.effects.Effects 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 EcoBossesPlugin : LibreforgePlugin() { @@ -38,6 +43,10 @@ class EcoBossesPlugin : LibreforgePlugin() { } override fun handleEnable() { + Effects.register(EffectBossDropChanceMultiplier) + Triggers.register(TriggerKillBoss) + Triggers.register(TriggerSpawnBoss) + registerHolderProvider { it.bossHolders } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/EffectBossDropChanceMultiplier.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/EffectBossDropChanceMultiplier.kt new file mode 100644 index 0000000..cc74d31 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/EffectBossDropChanceMultiplier.kt @@ -0,0 +1,28 @@ +package com.willfp.ecobosses.libreforge + +import com.willfp.ecobosses.bosses.Bosses +import com.willfp.ecobosses.bosses.EcoBoss +import com.willfp.ecobosses.events.BossTryDropItemEvent +import com.willfp.libreforge.effects.templates.MultiMultiplierEffect +import org.bukkit.event.EventHandler + +object EffectBossDropChanceMultiplier : MultiMultiplierEffect("boss_drop_chance_multiplier") { + override val key = "bosses" + + override fun getElement(key: String): EcoBoss? { + return Bosses.getByID(key) + } + + override fun getAllElements(): Collection { + return Bosses.values() + } + + @EventHandler(ignoreCancelled = true) + fun handle(event: BossTryDropItemEvent) { + val player = event.player ?: return + + val multiplier = getMultiplier(player, event.boss) + + event.chance *= multiplier + } +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerKillBoss.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerKillBoss.kt new file mode 100644 index 0000000..d13af9d --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerKillBoss.kt @@ -0,0 +1,32 @@ +package com.willfp.ecobosses.libreforge + +import com.willfp.ecobosses.events.BossKillEvent +import com.willfp.libreforge.triggers.Trigger +import com.willfp.libreforge.triggers.TriggerData +import com.willfp.libreforge.triggers.TriggerParameter +import org.bukkit.attribute.Attribute +import org.bukkit.event.EventHandler + +object TriggerKillBoss : Trigger("kill_boss") { + override val parameters = setOf( + TriggerParameter.PLAYER, + TriggerParameter.VICTIM, + TriggerParameter.LOCATION + ) + + @EventHandler(ignoreCancelled = true) + fun handle(event: BossKillEvent) { + val killer = event.killer ?: return + val entity = event.boss.entity ?: return + + this.dispatch( + killer, + TriggerData( + player = killer, + victim = entity, + location = entity.location, + value = entity.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.value + ) + ) + } +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerSpawnBoss.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerSpawnBoss.kt new file mode 100644 index 0000000..3f33ae0 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/libreforge/TriggerSpawnBoss.kt @@ -0,0 +1,28 @@ +package com.willfp.ecobosses.libreforge + +import com.willfp.ecobosses.events.BossSpawnEvent +import com.willfp.libreforge.triggers.Trigger +import com.willfp.libreforge.triggers.TriggerData +import com.willfp.libreforge.triggers.TriggerParameter +import org.bukkit.event.EventHandler + +object TriggerSpawnBoss : Trigger("spawn_boss") { + override val parameters = setOf( + TriggerParameter.PLAYER, + TriggerParameter.LOCATION + ) + + @EventHandler(ignoreCancelled = true) + fun handle(event: BossSpawnEvent) { + val player = event.spawner ?: return + val location = event.location + + this.dispatch( + player, + TriggerData( + player = player, + location = location + ) + ) + } +} diff --git a/gradle.properties b/gradle.properties index 024f95b..f1cd088 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ #libreforge-updater -#Tue Mar 28 17:21:38 BST 2023 +#Tue Mar 28 18:28:32 BST 2023 kotlin.code.style=official libreforge-version=4.0.0 version=9.0.0