64 lines
1.8 KiB
Kotlin
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
|
|
}
|
|
}
|
|
} |