@@ -18,7 +18,7 @@ import com.lambda.client.util.math.RotationUtils.getRotationToEntityClosest
18
18
import com.lambda.client.util.threads.safeListener
19
19
import com.lambda.commons.interfaces.DisplayEnum
20
20
import net.minecraft.entity.Entity
21
- import net.minecraft.entity.EntityLivingBase
21
+ import net.minecraft.entity.projectile.EntityLargeFireball
22
22
import net.minecraft.util.EnumHand
23
23
import net.minecraftforge.fml.common.gameevent.TickEvent
24
24
@@ -40,6 +40,8 @@ object KillAura : Module(
40
40
private val prefer by setting(" Prefer" , CombatUtils .PreferWeapon .SWORD , { autoWeapon })
41
41
private val minSwapHealth by setting(" Min Swap Health" , 5.0f , 1.0f .. 20.0f , 0.5f )
42
42
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" )
43
45
val range by setting(" Range" , 4.0f , 0.0f .. 6.0f , 0.1f )
44
46
45
47
private val timer = TickTimer (TimeUnit .TICKS )
@@ -75,21 +77,34 @@ object KillAura : Module(
75
77
if (disableOnDeath) disable()
76
78
return @safeListener
77
79
}
78
- val target = CombatManager .target ? : return @safeListener
80
+ val target = getFireball() ? : CombatManager .target ? : return @safeListener
79
81
80
82
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
+ }
85
90
86
91
inactiveTicks = 0
87
92
rotate(target)
88
93
if (canAttack()) attack(target)
89
94
}
90
95
}
91
96
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
+
93
108
when (rotationMode) {
94
109
RotationMode .SPOOF -> {
95
110
sendPlayerPacket {
0 commit comments