Skip to content

Commit 5abb314

Browse files
author
Nep Nep
authored
Add fireball deflection to KillAura (#220)
* Add ghast fireball deflection to KillAura * Allow forcing viewlock for fireballs
1 parent 2529b8e commit 5abb314

File tree

1 file changed

+22
-7
lines changed
  • src/main/kotlin/com/lambda/client/module/modules/combat

1 file changed

+22
-7
lines changed

src/main/kotlin/com/lambda/client/module/modules/combat/KillAura.kt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import com.lambda.client.util.math.RotationUtils.getRotationToEntityClosest
1818
import com.lambda.client.util.threads.safeListener
1919
import com.lambda.commons.interfaces.DisplayEnum
2020
import net.minecraft.entity.Entity
21-
import net.minecraft.entity.EntityLivingBase
21+
import net.minecraft.entity.projectile.EntityLargeFireball
2222
import net.minecraft.util.EnumHand
2323
import 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

Comments
 (0)