9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-23 08:59:31 +00:00

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	gradle.properties
This commit is contained in:
Will FP
2024-01-06 09:22:03 +00:00
6 changed files with 37 additions and 15 deletions

View File

@@ -52,7 +52,8 @@ class EcoMobsPlugin : LibreforgePlugin() {
VanillaCompatibilityHandlers(), VanillaCompatibilityHandlers(),
DiscoverRecipeListener(this), DiscoverRecipeListener(this),
SpawnEggHandler(this), SpawnEggHandler(this),
SpawnTotemHandler() SpawnTotemHandler(),
topDamagerHandler
) )
} }

View File

@@ -27,7 +27,7 @@ interface LivingMob {
/** /**
* Kill the mob. * Kill the mob.
*/ */
fun kill(player: Player?) fun kill(player: Player?, removeTracking: Boolean = true)
/** /**
* Despawn the mob. * Despawn the mob.

View File

@@ -1,9 +1,11 @@
package com.willfp.ecomobs.mob.damage package com.willfp.ecomobs.mob.damage
import com.willfp.eco.util.savedDisplayName import com.willfp.eco.util.savedDisplayName
import com.willfp.eco.util.toNiceString
import com.willfp.eco.util.tryAsPlayer import com.willfp.eco.util.tryAsPlayer
import com.willfp.ecomobs.EcoMobsPlugin import com.willfp.ecomobs.EcoMobsPlugin
import com.willfp.libreforge.NamedValue import com.willfp.libreforge.NamedValue
import com.willfp.libreforge.triggers.TriggerData
import org.bukkit.Bukkit import org.bukkit.Bukkit
import org.bukkit.entity.Mob import org.bukkit.entity.Mob
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
@@ -49,10 +51,21 @@ class TopDamagerHandler(
fun generatePlaceholders(mob: Mob): List<NamedValue> { fun generatePlaceholders(mob: Mob): List<NamedValue> {
return mob.topDamagers return mob.topDamagers
.mapIndexed { index, damager -> .flatMapIndexed { index, damager ->
NamedValue("top_damager_${index + 1}_name", Bukkit.getOfflinePlayer(damager.uuid).name ?: "Unknown") listOf(
NamedValue("top_damager_${index + 1}_display", Bukkit.getOfflinePlayer(damager.uuid).savedDisplayName) NamedValue(
NamedValue("top_damager_${index + 1}_damage", damager.damage.toString()) "top_damager_${index + 1}_name",
Bukkit.getOfflinePlayer(damager.uuid).name ?: "Unknown"
),
NamedValue(
"top_damager_${index + 1}_display",
Bukkit.getOfflinePlayer(damager.uuid).savedDisplayName
),
NamedValue(
"top_damager_${index + 1}_damage",
damager.damage.toNiceString()
)
)
} }
} }
} }

View File

@@ -33,6 +33,12 @@ object MobEventKill : MobEvent("kill") {
Bukkit.getPluginManager().callEvent(EcoMobKillEvent(living, player)) Bukkit.getPluginManager().callEvent(EcoMobKillEvent(living, player))
living.handleEvent(this, data.dispatch(player.toDispatcher())) living.handleEvent(this, data.dispatch(player.toDispatcher()))
living.kill(player)
// Tracking isn't removed here because it's removed in MobEventDeath, which is called after this one.
// Otherwise, player kills wouldn't fire the death event.
living.kill(
player,
removeTracking = false
)
} }
} }

View File

@@ -19,7 +19,7 @@ internal class LivingMobImpl(
private val plugin: EcoMobsPlugin, private val plugin: EcoMobsPlugin,
override val mob: EcoMob, override val mob: EcoMob,
override val entity: Mob, override val entity: Mob,
private val deathCallback: () -> Unit private val trackingRemovalCallback: () -> Unit
) : LivingMob { ) : LivingMob {
private val ticker = plugin.runnableFactory.create { private val ticker = plugin.runnableFactory.create {
tick(tick) tick(tick)
@@ -77,8 +77,8 @@ internal class LivingMobImpl(
mob.handleEvent(event, trigger) mob.handleEvent(event, trigger)
} }
override fun kill(player: Player?) { override fun kill(player: Player?, removeTracking: Boolean) {
handleRemove() handleRemove(removeTracking = removeTracking)
mob.spawnDrops(entity.location, player) mob.spawnDrops(entity.location, player)
} }
@@ -92,9 +92,11 @@ internal class LivingMobImpl(
) )
} }
private fun handleRemove() { private fun handleRemove(removeTracking: Boolean = true) {
ticker.cancel() ticker.cancel()
deathCallback() if (removeTracking) {
trackingRemovalCallback()
}
for (handler in this.tickHandlers) { for (handler in this.tickHandlers) {
handler.onRemove(this, tick) handler.onRemove(this, tick)

View File

@@ -1,5 +1,5 @@
#libreforge-updater #libreforge-updater
#Sat Jan 06 09:20:57 GMT 2024 #Thu Jan 04 17:25:24 GMT 2024
kotlin.code.style=official kotlin.code.style=official
libreforge-version=4.53.1 libreforge-version=4.53.0
version=10.0.0-b3 version=10.0.0-b5