mirror of
https://github.com/Auxilor/EcoMobs.git
synced 2026-01-04 15:41:33 +00:00
Added mob placeholders to chains
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.willfp.ecomobs.mob
|
||||
|
||||
import com.willfp.ecomobs.mob.event.MobEvent
|
||||
import com.willfp.libreforge.triggers.DispatchedTrigger
|
||||
import org.bukkit.entity.Mob
|
||||
import org.bukkit.entity.Player
|
||||
|
||||
@@ -17,6 +19,11 @@ interface LivingMob {
|
||||
*/
|
||||
val ticksLeft: Int
|
||||
|
||||
/**
|
||||
* Handle an event.
|
||||
*/
|
||||
fun handleEvent(event: MobEvent, trigger: DispatchedTrigger)
|
||||
|
||||
/**
|
||||
* Kill the mob.
|
||||
*/
|
||||
|
||||
@@ -14,6 +14,7 @@ object MobEventDamagePlayer : MobEvent("damage_player") {
|
||||
val player = event.entity as? Player ?: return
|
||||
val bukkitMob = event.damager as? Mob ?: return
|
||||
val ecoMob = bukkitMob.ecoMob ?: return
|
||||
val living = ecoMob.getLivingMob(bukkitMob) ?: return
|
||||
|
||||
val data = TriggerData(
|
||||
player = player,
|
||||
@@ -22,6 +23,6 @@ object MobEventDamagePlayer : MobEvent("damage_player") {
|
||||
event = event
|
||||
)
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ object MobEventDeath : MobEvent("death") {
|
||||
|
||||
Bukkit.getPluginManager().callEvent(EcoMobDeathEvent(living))
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
living.kill(null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,16 +8,16 @@ import org.bukkit.event.EventHandler
|
||||
object MobEventDespawn: MobEvent("despawn") {
|
||||
@EventHandler
|
||||
fun handle(event: EcoMobDespawnEvent) {
|
||||
val ecoMob = event.mob
|
||||
val living = event.mob
|
||||
|
||||
val data = TriggerData(
|
||||
victim = ecoMob.entity,
|
||||
location = ecoMob.entity.location,
|
||||
victim = living.entity,
|
||||
location = living.entity.location,
|
||||
event = event
|
||||
)
|
||||
|
||||
val player = getArbitraryPlayer() ?: return
|
||||
|
||||
ecoMob.mob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ object MobEventInteract: MobEvent("interact") {
|
||||
fun handle(event: PlayerInteractEntityEvent) {
|
||||
val bukkitMob = event.rightClicked as? Mob ?: return
|
||||
val ecoMob = bukkitMob.ecoMob ?: return
|
||||
val living = ecoMob.getLivingMob(bukkitMob) ?: return
|
||||
val player = event.player
|
||||
|
||||
val data = TriggerData(
|
||||
@@ -21,6 +22,6 @@ object MobEventInteract: MobEvent("interact") {
|
||||
event = event
|
||||
)
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ object MobEventKill : MobEvent("kill") {
|
||||
|
||||
Bukkit.getPluginManager().callEvent(EcoMobKillEvent(living, player))
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
living.kill(player)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ object MobEventKillPlayer : MobEvent("kill_player") {
|
||||
val player = event.victim as? Player ?: return
|
||||
val bukkitMob = event.killer as? Mob ?: return
|
||||
val ecoMob = bukkitMob.ecoMob ?: return
|
||||
val living = ecoMob.getLivingMob(bukkitMob) ?: return
|
||||
|
||||
val data = TriggerData(
|
||||
player = player,
|
||||
@@ -22,6 +23,6 @@ object MobEventKillPlayer : MobEvent("kill_player") {
|
||||
event = event
|
||||
)
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ object MobEventMeleeAttack : MobEvent("melee_attack") {
|
||||
fun handle(event: EntityDamageByEntityEvent) {
|
||||
val bukkitMob = event.entity as? Mob ?: return
|
||||
val ecoMob = bukkitMob.ecoMob ?: return
|
||||
val living = ecoMob.getLivingMob(bukkitMob) ?: return
|
||||
val player = event.damager as? Player ?: return
|
||||
|
||||
val data = TriggerData(
|
||||
@@ -22,7 +23,7 @@ object MobEventMeleeAttack : MobEvent("melee_attack") {
|
||||
event = event
|
||||
)
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
ecoMob.handleEvent(MobEventAnyAttack, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(MobEventAnyAttack, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.willfp.ecomobs.mob.event.MobEvent
|
||||
import com.willfp.ecomobs.mob.impl.ecoMob
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import org.bukkit.entity.Mob
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||
|
||||
@@ -13,6 +14,13 @@ object MobEventRangedAttack : MobEvent("ranged_attack") {
|
||||
fun handle(event: EntityDamageByEntityEvent) {
|
||||
val bukkitMob = event.entity as? Mob ?: return
|
||||
val ecoMob = bukkitMob.ecoMob ?: return
|
||||
val living = ecoMob.getLivingMob(bukkitMob) ?: return
|
||||
|
||||
// If the damager is a player, it's a melee attack
|
||||
if (event.damager is Player) {
|
||||
return
|
||||
}
|
||||
|
||||
val player = event.damager.tryAsPlayer() ?: return
|
||||
|
||||
val data = TriggerData(
|
||||
@@ -22,7 +30,7 @@ object MobEventRangedAttack : MobEvent("ranged_attack") {
|
||||
event = event
|
||||
)
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
ecoMob.handleEvent(MobEventAnyAttack, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(MobEventAnyAttack, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,22 +3,21 @@ package com.willfp.ecomobs.mob.event.impl
|
||||
import com.willfp.ecomobs.event.EcoMobSpawnEvent
|
||||
import com.willfp.ecomobs.mob.event.MobEvent
|
||||
import com.willfp.libreforge.triggers.TriggerData
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.event.EventHandler
|
||||
|
||||
object MobEventSpawn: MobEvent("spawn") {
|
||||
@EventHandler
|
||||
fun handle(event: EcoMobSpawnEvent) {
|
||||
val mob = event.mob
|
||||
val living = event.mob
|
||||
|
||||
val data = TriggerData(
|
||||
victim = mob.entity,
|
||||
location = mob.entity.location,
|
||||
victim = living.entity,
|
||||
location = living.entity.location,
|
||||
event = event
|
||||
)
|
||||
|
||||
val player = getArbitraryPlayer() ?: return
|
||||
|
||||
mob.mob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ object MobEventTakeDamage : MobEvent("take_damage") {
|
||||
fun handle(event: EntityDamageEvent) {
|
||||
val bukkitMob = event.entity as? Mob ?: return
|
||||
val ecoMob = bukkitMob.ecoMob ?: return
|
||||
val living = ecoMob.getLivingMob(bukkitMob) ?: return
|
||||
|
||||
val data = TriggerData(
|
||||
victim = bukkitMob,
|
||||
@@ -24,6 +25,6 @@ object MobEventTakeDamage : MobEvent("take_damage") {
|
||||
|
||||
val player = Bukkit.getOnlinePlayers().firstOrNull() ?: return
|
||||
|
||||
ecoMob.handleEvent(this, data.dispatch(player))
|
||||
living.handleEvent(this, data.dispatch(player))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,12 @@ import com.willfp.ecomobs.EcoMobsPlugin
|
||||
import com.willfp.ecomobs.event.EcoMobDespawnEvent
|
||||
import com.willfp.ecomobs.mob.EcoMob
|
||||
import com.willfp.ecomobs.mob.LivingMob
|
||||
import com.willfp.ecomobs.mob.event.MobEvent
|
||||
import com.willfp.ecomobs.mob.placeholder.MobPlaceholders
|
||||
import com.willfp.ecomobs.mob.placeholder.formatMobPlaceholders
|
||||
import com.willfp.ecomobs.tick.TickHandler
|
||||
import com.willfp.libreforge.NamedValue
|
||||
import com.willfp.libreforge.triggers.DispatchedTrigger
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.entity.Mob
|
||||
import org.bukkit.entity.Player
|
||||
@@ -61,6 +65,14 @@ internal class LivingMobImpl(
|
||||
ticker.runTaskTimer(1, 1)
|
||||
}
|
||||
|
||||
override fun handleEvent(event: MobEvent, trigger: DispatchedTrigger) {
|
||||
for (placeholder in MobPlaceholders.values()) {
|
||||
trigger.addPlaceholder(NamedValue(placeholder.id, placeholder.getValue(this)))
|
||||
}
|
||||
|
||||
mob.handleEvent(event, trigger)
|
||||
}
|
||||
|
||||
override fun kill(player: Player?) {
|
||||
remove()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user