이 게시글에서는 Kotlin 으로 플러그인을 작성하고 있습니다.
우선 https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/entity/EntitySpawnEvent.html 문서에 해당하는 EntitySpawnEvent 클래스를 @EventHandler 어노테이션과 함께 바인드합니다.
@EventHandler
fun onSpawnEntity(e: EntitySpawnEvent)
여기서는 생성되는 모든 몬스터의 체력과 이동속도를 증가시켜볼 것입니다.
이벤트가 발생되어 바인드한 함수가 호출될 경우 인가 받는 EntitySpawnEvent 객체가 살아있는 몬스터가 맞는지 확인하기 위해 LivingEntity 와 TypeCheck 를 진행하여 확인합니다.
if (e.entity is LivingEntity)
몬스터의 체력과 이동속도를 조정하는 코드를 삽입합니다.
val livingEnt = e.entity as LivingEntity
val maxHealth = livingEnt.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.value
val value = maxHealth * 2.0
livingEnt.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.baseValue = value
livingEnt.getAttribute(Attribute.GENERIC_MOVEMENT_SPEED)!!.baseValue *= 0.05
livingEnt.health = value
e.entity 를 LivingEntity 로 Casting 해주고, 현재 체력을 가져와서 2배를 올려주고, 이동속도는 5% 만큼 향상시키는 코드를 작성해보았습니다.
만약 특정 엔티티만 적용하고 싶다면 LivingEntity 가 아닌 https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Zombie.html Zombie 클래스와 같은 클래스로 TypeCheck 를 진행하시면 됩니다.
사용된 imports
import org.bukkit.attribute.Attribute
import org.bukkit.entity.LivingEntity
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntitySpawnEvent
반응형