@@ -18,7 +18,7 @@ import com.lambda.client.util.math.RotationUtils.getRotationToEntityClosest
1818import com.lambda.client.util.threads.safeListener
1919import com.lambda.commons.interfaces.DisplayEnum
2020import net.minecraft.entity.Entity
21- import net.minecraft.entity.EntityLivingBase
21+ import net.minecraft.entity.projectile.EntityLargeFireball
2222import net.minecraft.util.EnumHand
2323import net.minecraftforge.fml.common.gameevent.TickEvent
2424
@@ -40,6 +40,8 @@ object KillAura : Module(
4040 private val prefer by setting(" Prefer" , CombatUtils .PreferWeapon .SWORD , { autoWeapon })
4141 private val minSwapHealth by setting(" Min Swap Health" , 5.0f , 1.0f .. 20.0f , 0.5f )
4242 private val swapDelay by setting(" Swap Delay" , 10 , 0 .. 50 , 1 )
43+ private val fireballs by setting(" Target Fireballs" , false )
44+ private val fireballForceViewLock by setting(" Force ViewLock" , true , { fireballs }, description = " Only applies to fireballs" )
4345 val range by setting(" Range" , 4.0f , 0.0f .. 6.0f , 0.1f )
4446
4547 private val timer = TickTimer (TimeUnit .TICKS )
@@ -75,21 +77,34 @@ object KillAura : Module(
7577 if (disableOnDeath) disable()
7678 return @safeListener
7779 }
78- val target = CombatManager .target ? : return @safeListener
80+ val target = getFireball() ? : CombatManager .target ? : return @safeListener
7981
8082 if (! CombatManager .isOnTopPriority(KillAura ) || CombatSetting .pause) return @safeListener
81- if (player.getDistance(target) >= range) return @safeListener
82- if (player.scaledHealth > minSwapHealth && autoWeapon) equipBestWeapon(prefer)
83- if (weaponOnly && ! player.heldItemMainhand.item.isWeapon) return @safeListener
84- if (swapDelay > 0 && System .currentTimeMillis() - HotbarManager .swapTime < swapDelay * 50L ) return @safeListener
83+
84+ if (target !is EntityLargeFireball ) {
85+ if (player.getDistance(target) >= range) return @safeListener
86+ if (player.scaledHealth > minSwapHealth && autoWeapon) equipBestWeapon(prefer)
87+ if (weaponOnly && ! player.heldItemMainhand.item.isWeapon) return @safeListener
88+ if (swapDelay > 0 && System .currentTimeMillis() - HotbarManager .swapTime < swapDelay * 50L ) return @safeListener
89+ }
8590
8691 inactiveTicks = 0
8792 rotate(target)
8893 if (canAttack()) attack(target)
8994 }
9095 }
9196
92- private fun SafeClientEvent.rotate (target : EntityLivingBase ) {
97+ private fun SafeClientEvent.getFireball (): EntityLargeFireball ? {
98+ if (! fireballs) return null
99+ return world.loadedEntityList.firstOrNull { it is EntityLargeFireball && player.getDistance(it) < range } as EntityLargeFireball ?
100+ }
101+
102+ private fun SafeClientEvent.rotate (target : Entity ) {
103+ if (fireballForceViewLock && target is EntityLargeFireball ) {
104+ faceEntityClosest(target)
105+ return
106+ }
107+
93108 when (rotationMode) {
94109 RotationMode .SPOOF -> {
95110 sendPlayerPacket {
0 commit comments