9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-20 07:29:21 +00:00

Compare commits

...

12 Commits

Author SHA1 Message Date
Auxilor
93c5ce5b6c libreforge-updater 2024-01-01 20:02:25 +00:00
Auxilor
11acfed77c Fixed top damager placeholders 2024-01-01 18:05:27 +00:00
Auxilor
8cca1f7994 Fixed 'death' event, fixed top damagers 2024-01-01 17:59:02 +00:00
Will FP
f6a40d84f7 Updated to 10.0.0-b2 2023-12-30 13:34:28 +01:00
Will FP
9e663e89e8 Fixed model engine integration 2023-12-30 13:34:17 +01:00
Will FP
58b0ba6b81 Updated bStats ID 2023-12-28 16:45:23 +01:00
Will FP
a40164a03d Fixed tickers 2023-12-28 12:48:04 +01:00
Will FP
b946346020 Fix to lang.yml 2023-12-27 18:04:26 +01:00
Will FP
3753c93bf5 Improved error message 2023-12-27 17:53:04 +01:00
Will FP
9d407b9dea Fixed death animation not playing 2023-12-27 17:47:55 +01:00
Will FP
08f8b02d22 Fixed custom entity 2023-12-26 14:19:06 +01:00
Will FP
913120e791 oops 2023-12-24 14:56:21 +01:00
10 changed files with 45 additions and 26 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

@@ -21,7 +21,7 @@ class IntegrationModelEngine : Listener, Integration {
val modelled = ModelEngineBridge.instance.createModeledEntity(entity) val modelled = ModelEngineBridge.instance.createModeledEntity(entity)
modelled.addModel(model) modelled.addModel(model)
modelled.isBaseEntityVisible = true modelled.isBaseEntityVisible = false
} }
override fun getPluginName(): String { override fun getPluginName(): String {

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

@@ -4,6 +4,7 @@ import com.willfp.eco.util.savedDisplayName
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 +50,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.toString()
)
)
} }
} }
} }

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

@@ -309,7 +309,7 @@ internal class ConfigDrivenEcoMob(
{ (it as? Mob)?.ecoMob == this } { (it as? Mob)?.ecoMob == this }
) { ) {
this.spawn(it, SpawnReason.COMMAND)!!.entity this.spawn(it, SpawnReason.COMMAND)!!.entity
} }.apply { register() }
/* /*
---------- ----------
@@ -353,7 +353,6 @@ internal class ConfigDrivenEcoMob(
return trackedMobs[uuid] return trackedMobs[uuid]
} }
@Suppress("UNCHECKED_CAST")
override fun spawn(location: Location, reason: SpawnReason): LivingMob? { override fun spawn(location: Location, reason: SpawnReason): LivingMob? {
// Call bukkit event // Call bukkit event
val preSpawnEvent = EcoMobPreSpawnEvent(this, reason) val preSpawnEvent = EcoMobPreSpawnEvent(this, reason)
@@ -364,7 +363,7 @@ internal class ConfigDrivenEcoMob(
} }
// Spawn bukkit mob // Spawn bukkit mob
val entity = mob.spawn(location) as? Mob ?: throw IllegalStateException("Mob is not a mob") val entity = mob.spawn(location) as? Mob ?: throw IllegalStateException("Base entity must be a mob!")
// Mark as custom mob // Mark as custom mob
entity.ecoMob = this entity.ecoMob = this

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)
@@ -27,13 +27,13 @@ internal class LivingMobImpl(
if (!isAlive) { if (!isAlive) {
it.cancel() it.cancel()
remove() handleRemove()
} }
} }
private var isRunning = false private var isRunning = false
private var tick = 1 private var tick = 0
private val tickHandlers = mutableListOf<TickHandler>() private val tickHandlers = mutableListOf<TickHandler>()
@@ -77,25 +77,26 @@ internal class LivingMobImpl(
mob.handleEvent(event, trigger) mob.handleEvent(event, trigger)
} }
override fun kill(player: Player?) { override fun kill(player: Player?, removeTracking: Boolean) {
remove() handleRemove(removeTracking = removeTracking)
mob.spawnDrops(entity.location, player) mob.spawnDrops(entity.location, player)
} }
override fun despawn() { override fun despawn() {
remove() entity.remove()
handleRemove()
Bukkit.getPluginManager().callEvent( Bukkit.getPluginManager().callEvent(
EcoMobDespawnEvent(this) EcoMobDespawnEvent(this)
) )
} }
private fun remove() { private fun handleRemove(removeTracking: Boolean = true) {
ticker.cancel() ticker.cancel()
if (removeTracking) {
entity.remove() trackingRemovalCallback()
deathCallback() }
for (handler in this.tickHandlers) { for (handler in this.tickHandlers) {
handler.onRemove(this, tick) handler.onRemove(this, tick)

View File

@@ -4,6 +4,6 @@ environment:
options: options:
resource-id: 525 resource-id: 525
bstats-id: 10635 bstats-id: 20581
color: "&9" color: "&9"
proxy-package: "com.willfp.ecomobs.nms" proxy-package: "com.willfp.ecomobs.nms"

View File

@@ -1,5 +1,5 @@
messages: messages:
prefix: "&9&lEcoMobs &f» " prefix: "&9&lEcoMobs &8» &f"
no-permission: "&cYou don't have permission to do this!" no-permission: "&cYou don't have permission to do this!"
not-player: "&cThis command must be run by a player" not-player: "&cThis command must be run by a player"
invalid-command: "&cUnknown subcommand!" invalid-command: "&cUnknown subcommand!"

View File

@@ -1,5 +1,5 @@
#libreforge-updater #libreforge-updater
#Sun Dec 24 14:55:22 CET 2023 #Mon Jan 01 20:02:24 GMT 2024
kotlin.code.style=official kotlin.code.style=official
libreforge-version=4.51.0 libreforge-version=4.52.0
version=10.0.0-b2 version=10.0.0-b3