Skip to content

Commit

Permalink
LiquidBounce BackTrack
Browse files Browse the repository at this point in the history
  • Loading branch information
XeContrast committed Nov 10, 2024
1 parent c0cf366 commit faede31
Show file tree
Hide file tree
Showing 69 changed files with 1,936 additions and 1,390 deletions.
1 change: 1 addition & 0 deletions src/main/java/net/ccbluex/liquidbounce/FDPClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ object FDPClient {
eventManager.registerListener(SessionUtils())
eventManager.registerListener(StatisticsUtils())
eventManager.registerListener(LocationCache())
eventManager.registerListener(PacketUtils)
eventManager.registerListener(macroManager)
eventManager.registerListener(combatManager)

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/ccbluex/liquidbounce/event/Listenable.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ package net.ccbluex.liquidbounce.event
import java.lang.reflect.Method

interface Listenable {
fun handleEvents(): Boolean
fun handleEvents() = true
}

@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class FamousCheck : Module() {
HackerData("Yao_Mao"),
HackerData("Bad_Smoke"),
HackerData("tea_tea"),
HackerData("L1ne"),
)

world.playerEntities.forEach { other ->
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ object InfiniteAura : Module() {
val z = event.packet.getZ() - mc.thePlayer.posZ
val diff = Math.sqrt(x * x + y * y + z * z)
event.cancelEvent() // cancel
PacketUtils.sendPacketNoEvent(C06PacketPlayerPosLook(event.packet.getX(), event.packet.getY(), event.packet.getZ(), event.packet.getYaw(), event.packet.getPitch(), true))
PacketUtils.sendPacket(C06PacketPlayerPosLook(event.packet.getX(), event.packet.getY(), event.packet.getZ(), event.packet.getYaw(), event.packet.getPitch(), true),false)

}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ import net.ccbluex.liquidbounce.utils.ClientUtils.runTimeTicks
import net.ccbluex.liquidbounce.utils.EntityUtils.isLookingOnEntities
import net.ccbluex.liquidbounce.utils.EntityUtils.rotation
import net.ccbluex.liquidbounce.utils.RotationUtils.Companion.getVectorForRotation
import net.ccbluex.liquidbounce.utils.RotationUtils.Companion.isVisible
import net.ccbluex.liquidbounce.utils.RotationUtils.Companion.targetRotation
import net.ccbluex.liquidbounce.utils.extensions.eyes
import net.ccbluex.liquidbounce.utils.extensions.getDistanceToEntityBox
import net.ccbluex.liquidbounce.utils.extensions.hitBox
Expand Down Expand Up @@ -1014,6 +1016,14 @@ object KillAura : Module() {

var distance = mc.thePlayer.getDistanceToEntityBox(entity)

if (Backtrack.handleEvents()) {
val trackedDistance = Backtrack.getNearestTrackedDistance(entity)

if (distance > trackedDistance) {
distance = trackedDistance
}
}

val entityFov = RotationUtils.getRotationDifference(entity)

if (distance <= discoverRangeValue.get() && (fov == 180F || entityFov <= fov)) {
Expand All @@ -1024,7 +1034,14 @@ object KillAura : Module() {

// Sort targets by priority
when (priorityValue.get().lowercase()) {
"distance" -> discoveredTargets.sortBy { mc.thePlayer.getDistanceToEntityBox(it) } // Sort by distance
"distance" -> discoveredTargets.sortBy {
var result = 0.0

Backtrack.runWithNearestTrackedDistance(it) {
result = mc.thePlayer.getDistanceToEntityBox(it) // Sort by distance
}

result } // Sort by distance
"health" -> discoveredTargets.sortBy { it.health + it.absorptionAmount } // Sort by health
"fov" -> discoveredTargets.sortBy { RotationUtils.getRotationDifference(it) } // Sort by FOV
"livingtime" -> discoveredTargets.sortBy { -it.ticksExisted } // Sort by existence
Expand Down Expand Up @@ -1052,7 +1069,11 @@ object KillAura : Module() {
for (entity in inRangeDiscoveredTargets) {
// Update rotations to current target
if (!updateRotations(entity)) {
val success = false
var success = false

Backtrack.runWithNearestTrackedDistance(entity) {
success = updateRotations(entity)
}

if (!success) {
// when failed then try another target
Expand Down Expand Up @@ -1306,6 +1327,9 @@ object KillAura : Module() {
hitable = false
return
}
var chosenEntity: Entity? = null
val eyes = mc.thePlayer.eyes
val currentRotation = targetRotation ?: mc.thePlayer.rotation
val entityDist = mc.thePlayer.getDistanceToEntityBox(currentTarget as Entity)
canSwing = entityDist < rangeValue.get() && (currentTarget as EntityLivingBase).hurtTime <= hurtTimeValue.get()
if (hitAbleValue.get()) {
Expand All @@ -1317,10 +1341,65 @@ object KillAura : Module() {
hitable = true
return
}
var shouldExcept = false

val targetToCheck = this.currentTarget ?: return

var checkNormally = true

if (Backtrack.handleEvents()) {
Backtrack.loopThroughBacktrackData(targetToCheck) {
var result = false

checkIfAimingAtBox(targetToCheck, currentRotation, eyes, onSuccess = {
checkNormally = false

result = true
}, onFail = {
result = false
})

return@loopThroughBacktrackData result
}
}

if (!checkNormally) {
return
}

val wallTrace = mc.thePlayer.rayTraceWithServerSideRotation(entityDist)
hitable = RotationUtils.isFaced(currentTarget!!, maxRange.toDouble()) && (entityDist < discoverRangeValue.get() || wallTrace?.typeOfHit != MovingObjectPosition.MovingObjectType.BLOCK) && (currentTarget as EntityLivingBase).hurtTime <= hurtTimeValue.get()
}

private fun checkIfAimingAtBox(
targetToCheck: Entity, currentRotation: Rotation, eyes: Vec3, onSuccess: () -> Unit,
onFail: () -> Unit = { },
) {
if (targetToCheck.hitBox.isVecInside(eyes)) {
onSuccess()
return
}

// Recreate raycast logic
val intercept = targetToCheck.hitBox.calculateIntercept(
eyes,
eyes + getVectorForRotation(currentRotation) * rangeValue.get().toDouble()
)

if (intercept != null) {
// Is the entity box raycast vector visible? If not, check through-wall range
hitable =
isVisible(intercept.hitVec) || throughWallsValue.get()

if (hitable) {
onSuccess()
return
}
}

onFail()
}

/**
* Start blocking
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,13 @@ import net.ccbluex.liquidbounce.features.value.BoolValue
import net.ccbluex.liquidbounce.features.value.FloatValue
import net.ccbluex.liquidbounce.features.value.IntegerValue
import net.ccbluex.liquidbounce.features.value.ListValue
import net.ccbluex.liquidbounce.utils.BlinkUtils
import net.ccbluex.liquidbounce.utils.*
import net.ccbluex.liquidbounce.utils.EntityUtils.isLookingOnEntities
import net.ccbluex.liquidbounce.utils.EntityUtils.isSelected
import net.ccbluex.liquidbounce.utils.MovementUtils
import net.ccbluex.liquidbounce.utils.PacketUtils
import net.ccbluex.liquidbounce.utils.PacketUtils.realMotionX
import net.ccbluex.liquidbounce.utils.PacketUtils.realMotionY
import net.ccbluex.liquidbounce.utils.PacketUtils.realMotionZ
import net.ccbluex.liquidbounce.utils.extensions.getDistanceToEntityBox
import net.ccbluex.liquidbounce.utils.misc.RandomUtils.nextInt
import net.ccbluex.liquidbounce.utils.particles.Vec3
import net.ccbluex.liquidbounce.utils.timer.MSTimer
import net.ccbluex.liquidbounce.utils.toDegrees
import net.minecraft.block.BlockAir
import net.minecraft.entity.Entity
import net.minecraft.entity.EntityLivingBase
Expand Down Expand Up @@ -177,7 +171,7 @@ object Velocity : Module() {
0.8f,
0.0f,
1f
).displayable { mainMode.get() == "Other" && (otherMode.get() == "AttackReduce" || otherMode.get() == "KKCraft") }
).displayable { mainMode.get() == "Other" && otherMode.get() == "AttackReduce" }

private val jumpCooldownMode = ListValue(
"JumpCooldownMode",
Expand Down Expand Up @@ -843,16 +837,20 @@ object Velocity : Module() {
}

"kkcraft" -> {
if (player.hurtTime in 3..8 && lastGround) {
player.motionX *= reduceAmount.get()
player.motionZ *= reduceAmount.get()
if (player.hurtTime in 2..8) {
if (lastGround) {
player.motionX *= 0.59999999999
player.motionZ *= 0.59999999999
}
}
if (player.hurtTime == 0 && lastGround && player.onGround) {
lastGround = false
}
if (hasReceivedVelocity) {
if (player.hurtTime == 6 && player.onGround && !mc.gameSettings.keyBindJump.isKeyDown) {
player.jump()
if (player.hurtTime == 7 && player.onGround) {
if (!mc.gameSettings.keyBindJump.isKeyDown) {
player.jump()
}
player.motionX *= motionXZ
player.motionZ *= motionXZ
}
Expand Down Expand Up @@ -1234,7 +1232,7 @@ object Velocity : Module() {
var motionY = packet.realMotionY

if (limitMaxMotionValue.get())
motionY = motionY.coerceAtMost(maxYMotion.get() + 0.00075F)
motionY = motionY.coerceAtMost(maxYMotion.get() + 0.00075)

mc.thePlayer.motionY = motionY * vertical.get().toDouble()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,41 +65,41 @@ object Damage : Module() {
val z = mc.thePlayer.posZ
repeat(4) {
jumpYPosArr.forEach {
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(x, y + it, z, false))
PacketUtils.sendPacket(C04PacketPlayerPosition(x, y + it, z, false),false)
}
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(x, y, z, false))
PacketUtils.sendPacket(C04PacketPlayerPosition(x, y, z, false),false)
}
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(x, y, z, true))
PacketUtils.sendPacket(C04PacketPlayerPosition(x, y, z, true),false)
}
}
}
"aac" -> mc.thePlayer.motionY = 4 + damageValue.get().toDouble()
"verus" -> {
when (verusModeValue.get().lowercase()) {
"damage1" -> {
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.05, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 0.41999998688697815, mc.thePlayer.posZ, true))
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.05, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 0.41999998688697815, mc.thePlayer.posZ, true),false)
}
"damage2" -> {
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.35, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true))
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.35, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true),false)
}
"damage3" -> {
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 4, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true))
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 4, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true),false)
}
"damage4" -> {
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.42, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true))
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + 3.42, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, true),false)
}
"customdamage" -> {
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + packet1Value.get().toDouble(), mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + packet2Value.get().toDouble(), mc.thePlayer.posZ, false))
PacketUtils.sendPacketNoEvent(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + packet3Value.get().toDouble(), mc.thePlayer.posZ, true))
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + packet1Value.get().toDouble(), mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + packet2Value.get().toDouble(), mc.thePlayer.posZ, false),false)
PacketUtils.sendPacket(C04PacketPlayerPosition(mc.thePlayer.posX, mc.thePlayer.posY + packet3Value.get().toDouble(), mc.thePlayer.posZ, true),false)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ object PingSpoof : Module() {

override fun onDisable() {
packetBuffer.forEach {
PacketUtils.sendPacketNoEvent(it)
PacketUtils.sendPacket(it,false)
}
packetBuffer.clear()
}
Expand All @@ -70,7 +70,7 @@ object PingSpoof : Module() {
private /*suspend*/ fun queuePacket(delayTime: Long) {
Timer().schedule(delayTime) {
if (this@PingSpoof.state) {
PacketUtils.sendPacketNoEvent(packetBuffer.poll())
PacketUtils.sendPacket(packetBuffer.poll(),false)
}
}
}
Expand Down
Loading

0 comments on commit faede31

Please sign in to comment.