9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-22 00:19:30 +00:00

Adapted pull request

This commit is contained in:
Auxilor
2022-03-03 17:01:19 +00:00
parent ccc7c5797a
commit 0ad2d3cfc7
3 changed files with 34 additions and 24 deletions

View File

@@ -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<BossLifecycle, Iterable<LocalCommands>> = run {
val map = mutableMapOf<BossLifecycle, Iterable<LocalCommands>>()
private val commands: Map<BossLifecycle, LocalCommands> = run {
val map = mutableMapOf<BossLifecycle, LocalCommands>()
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) {

View File

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

View File

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