11package io.github.itsflicker.itstools.api
22
33import net.minecraft.network.chat.IChatBaseComponent
4- import net.minecraft.network.protocol.game.PacketPlayOutBoss
5- import net.minecraft.server.level.BossBattleServer
6- import net.minecraft.world.BossBattle
74import net.minecraft.world.entity.EntityCreature
85import net.minecraft.world.entity.EntityInsentient
96import net.minecraft.world.entity.EntityLiving
@@ -15,22 +12,17 @@ import net.minecraft.world.entity.ai.goal.PathfinderGoal
1512import net.minecraft.world.entity.ai.goal.PathfinderGoalMeleeAttack
1613import net.minecraft.world.entity.ai.goal.target.PathfinderGoalHurtByTarget
1714import net.minecraft.world.entity.ai.goal.target.PathfinderGoalNearestAttackableTarget
18- import org.bukkit.boss.BarColor
19- import org.bukkit.boss.BarStyle
20- import org.bukkit.craftbukkit.v1_20_R2.CraftServer
21- import org.bukkit.craftbukkit.v1_20_R2.entity.CraftEntity
22- import org.bukkit.craftbukkit.v1_20_R2.util.CraftChatMessage
15+ import org.bukkit.craftbukkit.v1_20_R3.CraftServer
16+ import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity
17+ import org.bukkit.craftbukkit.v1_20_R3.util.CraftChatMessage
2318import org.bukkit.entity.LivingEntity
24- import org.bukkit.entity.Player
2519import taboolib.common.platform.function.warning
2620import taboolib.library.reflex.Reflex.Companion.getProperty
2721import taboolib.library.reflex.Reflex.Companion.invokeMethod
2822import taboolib.library.reflex.Reflex.Companion.setProperty
2923import taboolib.module.ai.pathfinderExecutor
3024import taboolib.module.chat.ComponentText
31- import taboolib.module.nms.MinecraftVersion
3225import taboolib.module.nms.nmsClass
33- import taboolib.module.nms.sendPacket
3426
3527/* *
3628 * NMSImpl
@@ -42,7 +34,21 @@ import taboolib.module.nms.sendPacket
4234@Suppress(" unused" )
4335class NMSImpl : NMS () {
4436
45- lateinit var bossBarCache: BossBattle
37+ private fun craftChatMessageFromComponent (component : ComponentText ): IChatBaseComponent {
38+ return CraftChatMessage .fromJSON(component.toRawMessage())
39+ }
40+
41+ private fun LivingEntity.getEntityInsentient (): EntityInsentient ? {
42+ return pathfinderExecutor.getEntityInsentient(this ) as ? EntityInsentient
43+ }
44+
45+ private fun addGoalAi (entity : LivingEntity , priority : Int , pathfinderGoal : Any ) {
46+ entity.getEntityInsentient()?.goalSelector?.addGoal(priority, pathfinderGoal as PathfinderGoal )
47+ }
48+
49+ private fun addTargetAi (entity : LivingEntity , priority : Int , pathfinderGoal : Any ) {
50+ entity.getEntityInsentient()?.targetSelector?.addGoal(priority, pathfinderGoal as PathfinderGoal )
51+ }
4652
4753 override fun getTargetEntity (entity : LivingEntity ): LivingEntity ? {
4854 val entityInsentient = entity.getEntityInsentient() ? : return null
@@ -57,7 +63,8 @@ class NMSImpl : NMS() {
5763 }
5864
5965 override fun makeMeleeHostile (entity : LivingEntity , damage : Double? , speed : Double , priority : Int , type : String , followingTargetEvenIfNotSeen : Boolean ) {
60- val entityInsentient = entity.getEntityInsentient() ? : return warning(" ${entity.type} is not EntityInsentient." )
66+ val entityInsentient = entity.getEntityInsentient()
67+ ? : return warning(" ${entity.type} is not EntityInsentient." )
6168 if (damage != null ) {
6269 val map = entityInsentient.invokeMethod<AttributeMapBase >(" getAttributes" )!!
6370 // add generic:attack_damage attribute
@@ -74,63 +81,4 @@ class NMSImpl : NMS() {
7481 addTargetAi(entity, 2 , PathfinderGoalNearestAttackableTarget (entityInsentient, nmsClass(type).asSubclass(EntityLiving ::class .java), true ))
7582 }
7683
77- override fun sendResourcePack (player : Player , url : String , hash : String ) {
78- if (MinecraftVersion .isUniversal) {
79- // TODO
80- // player.sendPacket(PacketPlayOutResourcePackSend(url, hash, false, null))
81- } else {
82- player.sendPacket(net.minecraft.server.v1_16_R3.PacketPlayOutResourcePackSend (url, hash))
83- }
84- }
85-
86- override fun addBossBar (player : Player , name : ComponentText , color : BarColor , style : BarStyle ) {
87- if (! ::bossBarCache.isInitialized) {
88- bossBarCache = BossBattleServer (
89- craftChatMessageFromComponent(name),
90- BossBattle .BarColor .entries[color.ordinal],
91- BossBattle .BarStyle .entries[style.ordinal]
92- )
93- }
94- player.sendPacket(PacketPlayOutBoss .createAddPacket(bossBarCache))
95- }
96-
97- override fun removeBossBar (player : Player ) {
98- if (! ::bossBarCache.isInitialized) return
99- player.sendPacket(PacketPlayOutBoss .createRemovePacket(bossBarCache.id))
100- }
101-
102- override fun updateBossBar (player : Player , progress : Float ) {
103- if (! ::bossBarCache.isInitialized) return
104- bossBarCache.progress = progress
105- player.sendPacket(PacketPlayOutBoss .createUpdateProgressPacket(bossBarCache))
106- }
107-
108- override fun updateBossBar (player : Player , name : ComponentText ) {
109- if (! ::bossBarCache.isInitialized) return
110- bossBarCache.setName(craftChatMessageFromComponent(name))
111- player.sendPacket(PacketPlayOutBoss .createUpdateNamePacket(bossBarCache))
112- }
113-
114- override fun updateBossBar (player : Player , color : BarColor ) {
115- if (! ::bossBarCache.isInitialized) return
116- bossBarCache.setColor(BossBattle .BarColor .entries[color.ordinal])
117- player.sendPacket(PacketPlayOutBoss .createUpdateStylePacket(bossBarCache))
118- }
119-
120- private fun craftChatMessageFromComponent (component : ComponentText ): IChatBaseComponent {
121- return CraftChatMessage .fromJSON(component.toRawMessage())
122- }
123-
124- private fun LivingEntity.getEntityInsentient (): EntityInsentient ? {
125- return pathfinderExecutor.getEntityInsentient(this ) as ? EntityInsentient
126- }
127-
128- private fun addGoalAi (entity : LivingEntity , priority : Int , pathfinderGoal : Any ) {
129- entity.getEntityInsentient()?.goalSelector?.addGoal(priority, pathfinderGoal as PathfinderGoal )
130- }
131-
132- private fun addTargetAi (entity : LivingEntity , priority : Int , pathfinderGoal : Any ) {
133- entity.getEntityInsentient()?.targetSelector?.addGoal(priority, pathfinderGoal as PathfinderGoal )
134- }
135-
13684}
0 commit comments