1package org.jire.runehiveps.event.player
3import com.runehive.game.world.World
4import com.runehive.game.world.entity.mob.data.PacketType
5import com.runehive.game.world.entity.mob.player.Player
6import org.jire.runehiveps.event.Event
7import kotlin.jvm.optionals.getOrNull
12interface PlayerEvent : Event {
16 override fun canHandle(player: Player) = super.canHandle(player)
17 && !player.locking.locked(PacketType.INTERACT)
19 override fun handle(player: Player) {
20 val other = World.getPlayerBySlot(index).getOrNull() ?: return
21 if (!other.isValid) return
23 val position = other.position
24 val region = World.getRegions().getRegion(position)
25 if (!region.containsPlayer(other.height, other)) return
27 handlePlayer(player, other)
30 fun handlePlayer(player: Player, other: Player)
35 crossinline handle: (other: Player) -> Unit
36 ) = object : PlayerEvent {
37 override val index = index
38 override fun handlePlayer(player: Player, other: Player) = player.walkTo(other) {