mirror of
https://github.com/Auxilor/EcoMobs.git
synced 2025-12-19 15:09:17 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93c5ce5b6c | ||
|
|
11acfed77c | ||
|
|
8cca1f7994 | ||
|
|
f6a40d84f7 | ||
|
|
9e663e89e8 | ||
|
|
58b0ba6b81 |
@@ -52,7 +52,8 @@ class EcoMobsPlugin : LibreforgePlugin() {
|
||||
VanillaCompatibilityHandlers(),
|
||||
DiscoverRecipeListener(this),
|
||||
SpawnEggHandler(this),
|
||||
SpawnTotemHandler()
|
||||
SpawnTotemHandler(),
|
||||
topDamagerHandler
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ class IntegrationModelEngine : Listener, Integration {
|
||||
|
||||
val modelled = ModelEngineBridge.instance.createModeledEntity(entity)
|
||||
modelled.addModel(model)
|
||||
modelled.isBaseEntityVisible = true
|
||||
modelled.isBaseEntityVisible = false
|
||||
}
|
||||
|
||||
override fun getPluginName(): String {
|
||||
|
||||
@@ -27,7 +27,7 @@ interface LivingMob {
|
||||
/**
|
||||
* Kill the mob.
|
||||
*/
|
||||
fun kill(player: Player?)
|
||||
fun kill(player: Player?, removeTracking: Boolean = true)
|
||||
|
||||
/**
|
||||
* Despawn the mob.
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.willfp.eco.util.savedDisplayName
|
||||
import com.willfp.eco.util.tryAsPlayer
|
||||
import com.willfp.ecomobs.EcoMobsPlugin
|
||||
import com.willfp.libreforge.NamedValue
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.entity.Mob
|
||||
import org.bukkit.event.EventHandler
|
||||
@@ -49,10 +50,21 @@ class TopDamagerHandler(
|
||||
|
||||
fun generatePlaceholders(mob: Mob): List<NamedValue> {
|
||||
return mob.topDamagers
|
||||
.mapIndexed { index, damager ->
|
||||
NamedValue("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.toString())
|
||||
.flatMapIndexed { index, damager ->
|
||||
listOf(
|
||||
NamedValue(
|
||||
"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.toString()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,12 @@ object MobEventKill : MobEvent("kill") {
|
||||
Bukkit.getPluginManager().callEvent(EcoMobKillEvent(living, player))
|
||||
|
||||
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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ internal class LivingMobImpl(
|
||||
private val plugin: EcoMobsPlugin,
|
||||
override val mob: EcoMob,
|
||||
override val entity: Mob,
|
||||
private val deathCallback: () -> Unit
|
||||
private val trackingRemovalCallback: () -> Unit
|
||||
) : LivingMob {
|
||||
private val ticker = plugin.runnableFactory.create {
|
||||
tick(tick)
|
||||
@@ -77,8 +77,8 @@ internal class LivingMobImpl(
|
||||
mob.handleEvent(event, trigger)
|
||||
}
|
||||
|
||||
override fun kill(player: Player?) {
|
||||
handleRemove()
|
||||
override fun kill(player: Player?, removeTracking: Boolean) {
|
||||
handleRemove(removeTracking = removeTracking)
|
||||
|
||||
mob.spawnDrops(entity.location, player)
|
||||
}
|
||||
@@ -92,9 +92,11 @@ internal class LivingMobImpl(
|
||||
)
|
||||
}
|
||||
|
||||
private fun handleRemove() {
|
||||
private fun handleRemove(removeTracking: Boolean = true) {
|
||||
ticker.cancel()
|
||||
deathCallback()
|
||||
if (removeTracking) {
|
||||
trackingRemovalCallback()
|
||||
}
|
||||
|
||||
for (handler in this.tickHandlers) {
|
||||
handler.onRemove(this, tick)
|
||||
|
||||
@@ -4,6 +4,6 @@ environment:
|
||||
|
||||
options:
|
||||
resource-id: 525
|
||||
bstats-id: 10635
|
||||
bstats-id: 20581
|
||||
color: "&9"
|
||||
proxy-package: "com.willfp.ecomobs.nms"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#libreforge-updater
|
||||
#Sun Dec 24 14:55:22 CET 2023
|
||||
#Mon Jan 01 20:02:24 GMT 2024
|
||||
kotlin.code.style=official
|
||||
libreforge-version=4.51.0
|
||||
version=10.0.0-b1
|
||||
libreforge-version=4.52.0
|
||||
version=10.0.0-b3
|
||||
|
||||
Reference in New Issue
Block a user