From 66fe3615ae58568995cc7765f005dc156d638cad Mon Sep 17 00:00:00 2001 From: yorik100 Date: Fri, 10 Nov 2023 04:35:44 +0100 Subject: [PATCH] KillAura fix + Backtrack improvements (#1534) * isEnemy check for backtrack * Added backtrack smart mode --- .../module/modules/combat/Backtrack.kt | 35 ++++++++++++++----- .../features/module/modules/player/FakeLag.kt | 2 +- .../liquidbounce/utils/RotationUtils.kt | 10 +++--- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Backtrack.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Backtrack.kt index a70765d8465..4e438fc455c 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Backtrack.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/combat/Backtrack.kt @@ -9,10 +9,13 @@ import net.ccbluex.liquidbounce.event.* import net.ccbluex.liquidbounce.features.module.Module import net.ccbluex.liquidbounce.features.module.ModuleCategory import net.ccbluex.liquidbounce.features.module.modules.player.Blink +import net.ccbluex.liquidbounce.features.module.modules.misc.Teams +import net.ccbluex.liquidbounce.features.module.modules.misc.AntiBot.isBot import net.ccbluex.liquidbounce.injection.implementations.IMixinEntity import net.ccbluex.liquidbounce.utils.* import net.ccbluex.liquidbounce.utils.PacketUtils.handlePacket import net.ccbluex.liquidbounce.utils.extensions.getDistanceToEntityBox +import net.ccbluex.liquidbounce.utils.extensions.isClientFriend import net.ccbluex.liquidbounce.utils.misc.StringUtils.contains import net.ccbluex.liquidbounce.utils.render.ColorUtils.rainbow import net.ccbluex.liquidbounce.utils.render.RenderUtils.drawBacktrackBox @@ -58,6 +61,7 @@ object Backtrack : Module("Backtrack", ModuleCategory.COMBAT) { override fun onChange(oldValue: Float, newValue: Float) = newValue.coerceIn(minimum, maxDistance) override fun isSupported() = mode == "Modern" } + private val smart by BoolValue("Smart", true) { mode == "Modern" } // ESP private val rainbow by BoolValue("Rainbow", true) { mode == "Modern" } @@ -235,13 +239,12 @@ object Backtrack : Module("Backtrack", ModuleCategory.COMBAT) { if (mode != "Modern") return - val target = target as? IMixinEntity + val target = target as? EntityLivingBase + val targetMixin = target as? IMixinEntity + val trueDist = targetMixin?.let {mc.thePlayer.getDistance(it.trueX, it.trueY, it.trueZ)} ?: 0.0 + val dist = target?.let {mc.thePlayer.getDistance(it.posX, it.posY, it.posZ)} ?: 0.0 - if (target != null && !Blink.blinkingReceive() && shouldBacktrack() && target.truePos && mc.thePlayer.getDistance( - target.trueX, - target.trueY, - target.trueZ - ) <= 6f && (style == "Smooth" || !globalTimer.hasTimePassed(delay)) + if (targetMixin != null && !Blink.blinkingReceive() && shouldBacktrack() && targetMixin.truePos && trueDist <= 6f && (!smart || trueDist >= dist) && (style == "Smooth" || !globalTimer.hasTimePassed(delay)) ) { handlePackets() } else { @@ -252,7 +255,7 @@ object Backtrack : Module("Backtrack", ModuleCategory.COMBAT) { @EventTarget fun onAttack(event: AttackEvent) { - if (event.targetEntity !is EntityLivingBase) + if (!isEnemy(event.targetEntity)) return // Clear all packets, start again on enemy change @@ -412,6 +415,22 @@ object Backtrack : Module("Backtrack", ModuleCategory.COMBAT) { private fun removeBacktrackData(id: UUID) = backtrackedPlayer.remove(id) + private fun isEnemy(entity: Entity?): Boolean { + if (entity is EntityLivingBase && entity != mc.thePlayer) { + if (entity is EntityPlayer) { + if (entity.isSpectator || isBot(entity)) return false + + if (entity.isClientFriend() && !NoFriends.handleEvents()) return false + + return !Teams.handleEvents() || !Teams.isInYourTeam(entity) + } + + return true + } + + return false + } + /** * This function will return the nearest tracked range of an entity. */ @@ -466,7 +485,7 @@ object Backtrack : Module("Backtrack", ModuleCategory.COMBAT) { private fun shouldBacktrack() = target?.let { - !it.isDead && (mc.thePlayer?.ticksExisted ?: 0) > 20 + !it.isDead && isEnemy(it) && (mc.thePlayer?.ticksExisted ?: 0) > 20 && mc.thePlayer.getDistanceToEntityBox(it) in minDistance..maxDistance } ?: false diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/player/FakeLag.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/player/FakeLag.kt index 3c63339918d..42e02dca0b0 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/player/FakeLag.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/player/FakeLag.kt @@ -77,7 +77,7 @@ object FakeLag : Module("FakeLag", ModuleCategory.PLAYER, gameDetecting = false) // Flush on kb is S12PacketEntityVelocity -> { - if (mc.thePlayer.entityId == packet.entityID && (packet.motionY != 0 || packet.motionX != 0 || packet.motionZ != 0)) { + if (mc.thePlayer.entityId == packet.entityID) { blink() return } diff --git a/src/main/java/net/ccbluex/liquidbounce/utils/RotationUtils.kt b/src/main/java/net/ccbluex/liquidbounce/utils/RotationUtils.kt index 7b602793d52..83b2397e8f8 100644 --- a/src/main/java/net/ccbluex/liquidbounce/utils/RotationUtils.kt +++ b/src/main/java/net/ccbluex/liquidbounce/utils/RotationUtils.kt @@ -284,14 +284,14 @@ object RotationUtils : MinecraftInstance(), Listenable { bb.minY + (bb.maxY - bb.minY) * (y * 0.3 + 1.0), bb.minZ + (bb.maxZ - bb.minZ) * (z * 0.3 + 1.0) ) - return VecRotation(vec3, toRotation(vec3, predict)) + return VecRotation(vec3, toRotation(vec3, predict).fixedSensitivity()) } val randomVec = Vec3( bb.minX + (bb.maxX - bb.minX) * x, bb.minY + (bb.maxY - bb.minY) * y, bb.minZ + (bb.maxZ - bb.minZ) * z ) - val randomRotation = toRotation(randomVec, predict) + val randomRotation = toRotation(randomVec, predict).fixedSensitivity() val eyes = mc.thePlayer.eyes var vecRotation: VecRotation? = null @@ -300,7 +300,7 @@ object RotationUtils : MinecraftInstance(), Listenable { val dist = eyes.distanceTo(randomVec) if (dist <= distance && (throughWalls || isVisible(randomVec))) { - return VecRotation(randomVec, randomRotation) + return VecRotation(randomVec, randomRotation.fixedSensitivity()) } } @@ -313,7 +313,7 @@ object RotationUtils : MinecraftInstance(), Listenable { bb.minZ + (bb.maxZ - bb.minZ) * z ) - val rotation = toRotation(vec, predict) + val rotation = toRotation(vec, predict).fixedSensitivity() val vecDist = eyes.distanceTo(vec) if (vecDist <= distance) { @@ -336,7 +336,7 @@ object RotationUtils : MinecraftInstance(), Listenable { val dist = eyes.distanceTo(vec) if (dist <= distance && (throughWalls || isVisible(vec))) { - return VecRotation(vec, toRotation(vec, predict)) + return VecRotation(vec, toRotation(vec, predict).fixedSensitivity()) } }