BlastingCrisis/src/main/kotlin/cc/maxmc/blastingcrisis/packet/BEntityVillager.kt

64 lines
1.8 KiB
Kotlin

package cc.maxmc.blastingcrisis.packet
import cc.maxmc.blastingcrisis.misc.PacketEntityManager
import cc.maxmc.blastingcrisis.misc.debug
import net.minecraft.server.v1_8_R3.DataWatcher
import org.bukkit.Location
import org.bukkit.entity.Player
class BEntityVillager private constructor(loc: Location) : BEntity(loc, 120) {
var name: (Player) -> String
get() = nameTag.name
set(name) {
nameTag.name = name
}
private val nameTag = BEntityNameTag(loc)
override fun addViewer(viewer: Player) {
super.addViewer(viewer)
nameTag.addViewer(viewer)
}
override fun spawnForPlayer(player: Player) {
super.spawnForPlayer(player)
nameTag.spawnForPlayer(player)
}
override fun removeViewer(viewer: Player) {
super.removeViewer(viewer)
nameTag.removeViewer(viewer)
}
override fun DataWatcher.initEntity() {
a(6, 1.0f) // Health
a(7, 0) // Potion Effect Color
a(8, 0.toByte()) // Is Potion Effect Ambient
a(9, 0.toByte()) // Number of Arrows in Entity
a(12, 1.toByte()) // Age (0 - child, 1 - adult)
a(15, 0.toByte()) // AI
/*
0 Farmer
1 Librarian
2 Priest
3 Blacksmith
4 Butcher
*/
a(16, 0) // Villager Type
}
companion object {
fun create(loc: Location): BEntityVillager {
val entity = BEntityVillager(loc)
PacketEntityManager.register(entity.entityID, entity)
entity.handleInteract {
debug("Interacting with entity: ${entity.entityID}")
debug("type: ${it.type}")
it.vector?.let { vec -> debug("vector: $vec") }
}
return entity
}
}
}