mirror of
https://github.com/Auxilor/EcoMobs.git
synced 2025-12-20 07:29:21 +00:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4a805c627 | ||
|
|
ce24ea4cf4 | ||
|
|
47e9ff13dc | ||
|
|
93c5ce5b6c | ||
|
|
11acfed77c | ||
|
|
8cca1f7994 | ||
|
|
f6a40d84f7 | ||
|
|
9e663e89e8 | ||
|
|
58b0ba6b81 | ||
|
|
a40164a03d | ||
|
|
b946346020 | ||
|
|
3753c93bf5 | ||
|
|
9d407b9dea | ||
|
|
08f8b02d22 | ||
|
|
913120e791 |
@@ -52,7 +52,8 @@ class EcoMobsPlugin : LibreforgePlugin() {
|
|||||||
VanillaCompatibilityHandlers(),
|
VanillaCompatibilityHandlers(),
|
||||||
DiscoverRecipeListener(this),
|
DiscoverRecipeListener(this),
|
||||||
SpawnEggHandler(this),
|
SpawnEggHandler(this),
|
||||||
SpawnTotemHandler()
|
SpawnTotemHandler(),
|
||||||
|
topDamagerHandler
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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!"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#libreforge-updater
|
#libreforge-updater
|
||||||
#Sun Dec 24 14:55:22 CET 2023
|
#Thu Jan 04 17:25:24 GMT 2024
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
libreforge-version=4.51.0
|
libreforge-version=4.53.0
|
||||||
version=10.0.0-b2
|
version=10.0.0-b5
|
||||||
|
|||||||
Reference in New Issue
Block a user