9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-22 16:39:25 +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.eco.util.toComponent
import com.willfp.ecobosses.events.BossKillEvent import com.willfp.ecobosses.events.BossKillEvent
import com.willfp.ecobosses.lifecycle.BossLifecycle import com.willfp.ecobosses.lifecycle.BossLifecycle
import com.willfp.ecobosses.tick.* import com.willfp.ecobosses.tick.BossBarTicker
import com.willfp.ecobosses.util.* 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.Holder
import com.willfp.libreforge.conditions.Conditions import com.willfp.libreforge.conditions.Conditions
import com.willfp.libreforge.effects.Effects import com.willfp.libreforge.effects.Effects
@@ -27,7 +40,8 @@ import org.bukkit.entity.LivingEntity
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType import org.bukkit.persistence.PersistentDataType
import java.util.* import java.util.Objects
import java.util.UUID
class EcoBoss( class EcoBoss(
val config: Config, val config: Config,
@@ -190,13 +204,11 @@ class EcoBoss(
map map
} }
private val commands: Map<BossLifecycle, Iterable<LocalCommands>> = run { private val commands: Map<BossLifecycle, LocalCommands> = run {
val map = mutableMapOf<BossLifecycle, Iterable<LocalCommands>>() val map = mutableMapOf<BossLifecycle, LocalCommands>()
for (value in BossLifecycle.values()) { for (value in BossLifecycle.values()) {
map[value] = config.getSubsections("messages.${value.name.lowercase()}").map { map[value] = LocalCommands(config.getStrings("commands.${value.name.lowercase()}"))
LocalCommands.fromConfig(it)
}
} }
map map
@@ -297,7 +309,11 @@ class EcoBoss(
mob.isPersistent = true mob.isPersistent = true
mob.isCustomNameVisible = true mob.isCustomNameVisible = true
mob.removeWhenFarAway = false 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( val boss = LivingEcoBoss(
plugin, plugin,
@@ -336,8 +352,7 @@ class EcoBoss(
fun handleLifecycle(lifecycle: BossLifecycle, location: Location, entity: LivingEntity?) { fun handleLifecycle(lifecycle: BossLifecycle, location: Location, entity: LivingEntity?) {
sounds[lifecycle]?.play(location) sounds[lifecycle]?.play(location)
messages[lifecycle]?.forEach { it.broadcast(location, entity?.topDamagers ?: emptyList()) } 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) { 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.core.config.interfaces.Config
import com.willfp.eco.util.NumberUtils import com.willfp.eco.util.NumberUtils
import com.willfp.eco.util.formatEco
import com.willfp.eco.util.savedDisplayName import com.willfp.eco.util.savedDisplayName
import com.willfp.ecobosses.EcoBossesPlugin import com.willfp.ecobosses.EcoBossesPlugin
import org.bukkit.Bukkit import org.bukkit.Bukkit
@@ -27,24 +26,13 @@ data class LocalCommands(
.replace("%damage_${i}_player%", player) .replace("%damage_${i}_player%", player)
} }
command = command.replace("%x%", location.blockX.toString()) command.replace("%x%", location.blockX.toString())
.replace("%y%", location.blockY.toString()) .replace("%y%", location.blockY.toString())
.replace("%z%", location.blockZ.toString()) .replace("%z%", location.blockZ.toString())
command.formatEco()
} }
for (s in toDispatch) { for (s in toDispatch) {
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), s); 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 - iron_block
- netherite_block - netherite_block
- iron_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: messages:
# For each category, you can add as many messages as you want, each with their own radius. # 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 # Radius is the distance from the boss where the player will be sent the message