From 0ad2d3cfc73fd5693434ac43efe92dba50572d82 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 3 Mar 2022 17:01:19 +0000 Subject: [PATCH] Adapted pull request --- .../com/willfp/ecobosses/bosses/EcoBoss.kt | 37 +++++++++++++------ .../willfp/ecobosses/util/LocalCommands.kt | 14 +------ .../src/main/resources/ecobosses.yml | 7 ++++ 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt index 69dbbe2..4b0de1a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/bosses/EcoBoss.kt @@ -14,8 +14,21 @@ import com.willfp.eco.core.recipe.recipes.CraftingRecipe import com.willfp.eco.util.toComponent import com.willfp.ecobosses.events.BossKillEvent import com.willfp.ecobosses.lifecycle.BossLifecycle -import com.willfp.ecobosses.tick.* -import com.willfp.ecobosses.util.* +import com.willfp.ecobosses.tick.BossBarTicker +import com.willfp.ecobosses.tick.BossTicker +import com.willfp.ecobosses.tick.DisplayNameTicker +import com.willfp.ecobosses.tick.LifespanTicker +import com.willfp.ecobosses.tick.TargetTicker +import com.willfp.ecobosses.tick.TeleportHandler +import com.willfp.ecobosses.util.BossDrop +import com.willfp.ecobosses.util.CommandReward +import com.willfp.ecobosses.util.ConfiguredSound +import com.willfp.ecobosses.util.LocalBroadcast +import com.willfp.ecobosses.util.LocalCommands +import com.willfp.ecobosses.util.PlayableSound +import com.willfp.ecobosses.util.SpawnTotem +import com.willfp.ecobosses.util.XpReward +import com.willfp.ecobosses.util.topDamagers import com.willfp.libreforge.Holder import com.willfp.libreforge.conditions.Conditions import com.willfp.libreforge.effects.Effects @@ -27,7 +40,8 @@ import org.bukkit.entity.LivingEntity import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack import org.bukkit.persistence.PersistentDataType -import java.util.* +import java.util.Objects +import java.util.UUID class EcoBoss( val config: Config, @@ -190,13 +204,11 @@ class EcoBoss( map } - private val commands: Map> = run { - val map = mutableMapOf>() + private val commands: Map = run { + val map = mutableMapOf() for (value in BossLifecycle.values()) { - map[value] = config.getSubsections("messages.${value.name.lowercase()}").map { - LocalCommands.fromConfig(it) - } + map[value] = LocalCommands(config.getStrings("commands.${value.name.lowercase()}")) } map @@ -297,7 +309,11 @@ class EcoBoss( mob.isPersistent = true mob.isCustomNameVisible = true mob.removeWhenFarAway = false - mob.persistentDataContainer.set(plugin.namespacedKeyFactory.create("boss"), PersistentDataType.STRING, "backwards_compat") + mob.persistentDataContainer.set( + plugin.namespacedKeyFactory.create("boss"), + PersistentDataType.STRING, + "backwards_compat" + ) val boss = LivingEcoBoss( plugin, @@ -336,8 +352,7 @@ class EcoBoss( fun handleLifecycle(lifecycle: BossLifecycle, location: Location, entity: LivingEntity?) { sounds[lifecycle]?.play(location) messages[lifecycle]?.forEach { it.broadcast(location, entity?.topDamagers ?: emptyList()) } - commands[lifecycle]?.forEach { it.dispatch(location, entity?.topDamagers ?: emptyList()) } - + commands[lifecycle]?.dispatch(location, entity?.topDamagers ?: emptyList()) } fun processRewards(event: BossKillEvent) { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/util/LocalCommands.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/util/LocalCommands.kt index fbc5e24..791a1b8 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/util/LocalCommands.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecobosses/util/LocalCommands.kt @@ -2,7 +2,6 @@ package com.willfp.ecobosses.util import com.willfp.eco.core.config.interfaces.Config import com.willfp.eco.util.NumberUtils -import com.willfp.eco.util.formatEco import com.willfp.eco.util.savedDisplayName import com.willfp.ecobosses.EcoBossesPlugin import org.bukkit.Bukkit @@ -27,24 +26,13 @@ data class LocalCommands( .replace("%damage_${i}_player%", player) } - command = command.replace("%x%", location.blockX.toString()) + command.replace("%x%", location.blockX.toString()) .replace("%y%", location.blockY.toString()) .replace("%z%", location.blockZ.toString()) - - command.formatEco() } for (s in toDispatch) { Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s); } - - } - - companion object { - fun fromConfig(config: Config): LocalCommands { - return LocalCommands( - config.getStrings("commands"), - ) - } } } diff --git a/eco-core/core-plugin/src/main/resources/ecobosses.yml b/eco-core/core-plugin/src/main/resources/ecobosses.yml index 647c1af..41dd6b0 100644 --- a/eco-core/core-plugin/src/main/resources/ecobosses.yml +++ b/eco-core/core-plugin/src/main/resources/ecobosses.yml @@ -123,6 +123,13 @@ bosses: - iron_block - netherite_block - iron_block + commands: + # For each category, you can add as many commands as you want, which will be executed by + # console. Supported placeholders are the same as for messages (see below) + spawn: [ ] + kill: [ ] + despawn: [ ] + injure: [ ] messages: # For each category, you can add as many messages as you want, each with their own radius. # Radius is the distance from the boss where the player will be sent the message