Skip to content

Commit

Permalink
feat: telly timings and requires sight option (#3917)
Browse files Browse the repository at this point in the history
  • Loading branch information
1zun4 committed Sep 10, 2024
1 parent 95623ee commit 952d093
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import net.ccbluex.liquidbounce.config.Choice
import net.ccbluex.liquidbounce.config.NamedChoice
import net.ccbluex.liquidbounce.config.NoneChoice
import net.ccbluex.liquidbounce.config.ToggleableConfigurable
import net.ccbluex.liquidbounce.event.events.GameTickEvent
import net.ccbluex.liquidbounce.event.events.MovementInputEvent
import net.ccbluex.liquidbounce.event.events.SimulatedTickEvent
import net.ccbluex.liquidbounce.event.handler
Expand Down Expand Up @@ -369,8 +370,6 @@ object ModuleScaffold : Module("Scaffold", Category.WORLD) {
}
}



var currentOptimalLine: Line? = null

@Suppress("unused")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,15 @@ import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.technique
import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.techniques.normal.ScaffoldEagleFeature
import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.techniques.normal.ScaffoldStabilizeMovementFeature
import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.techniques.normal.ScaffoldTellyFeature
import net.ccbluex.liquidbounce.utils.aiming.Rotation
import net.ccbluex.liquidbounce.utils.aiming.raycast
import net.ccbluex.liquidbounce.utils.block.targetfinding.*
import net.ccbluex.liquidbounce.utils.kotlin.EventPriorityConvention
import net.ccbluex.liquidbounce.utils.math.geometry.Line
import net.ccbluex.liquidbounce.utils.math.toBlockPos
import net.minecraft.entity.EntityPose
import net.minecraft.item.ItemStack
import net.minecraft.util.hit.HitResult
import net.minecraft.util.math.Vec3d
import net.minecraft.util.math.Vec3i
import kotlin.random.Random
Expand All @@ -41,6 +44,7 @@ import kotlin.random.Random
object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") {

private val aimMode by enumChoice("RotationMode", AimMode.STABILIZED)
private val requiresSight by boolean("RequiresSight", false)

init {
tree(ScaffoldEagleFeature)
Expand Down Expand Up @@ -82,6 +86,23 @@ object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") {
return findBestBlockPlacementTarget(getTargetedPosition(predictedPos.toBlockPos()), searchOptions)
}

override fun getRotations(target: BlockPlacementTarget?): Rotation? {
if (ScaffoldTellyFeature.enabled && ScaffoldTellyFeature.doNotAim) {
return null
}

if (requiresSight) {
val target = target ?: return null
val raycast = raycast(rotation = target.rotation) ?: return null

if (raycast.type == HitResult.Type.BLOCK && raycast.blockPos == target.interactedBlockPos) {
return target.rotation
}
}

return super.getRotations(target)
}

fun getFacePositionFactoryForConfig(predictedPos: Vec3d, predictedPose: EntityPose, optimalLine: Line?):
FaceTargetPositionFactory {
val config = PositionFactoryConfiguration(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@
package net.ccbluex.liquidbounce.features.module.modules.world.scaffold.techniques.normal

import net.ccbluex.liquidbounce.config.ToggleableConfigurable
import net.ccbluex.liquidbounce.event.events.GameTickEvent
import net.ccbluex.liquidbounce.event.events.MovementInputEvent
import net.ccbluex.liquidbounce.event.handler
import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.ModuleScaffold
import net.ccbluex.liquidbounce.features.module.modules.world.scaffold.techniques.ScaffoldNormalTechnique
import net.ccbluex.liquidbounce.utils.aiming.RotationManager
import net.ccbluex.liquidbounce.utils.entity.moving

/**
Expand All @@ -36,9 +38,36 @@ import net.ccbluex.liquidbounce.utils.entity.moving
*/
object ScaffoldTellyFeature : ToggleableConfigurable(ScaffoldNormalTechnique, "Telly", false) {

val doNotAim: Boolean
get() = offGroundTicks < straightTicks && ticksUntilJump >= jumpTicks

private var offGroundTicks = 0
private var ticksUntilJump = 0

private val straightTicks by int("Straight", 0, 0..5, "ticks")
private val jumpTicksOpt by intRange("Jump", 0..0, 0..10, "ticks")
private var jumpTicks = jumpTicksOpt.random()

@Suppress("unused")
private val gameHandler = handler<GameTickEvent> {
if (player.isOnGround) {
offGroundTicks = 0
ticksUntilJump++
} else {
offGroundTicks++
}
}

@Suppress("unused")
private val movementInputHandler = handler<MovementInputEvent> {
if (player.moving && ModuleScaffold.blockCount > 0) {
if (!player.moving || ModuleScaffold.blockCount <= 0 || !player.isOnGround) {
return@handler
}

val isStraight = RotationManager.currentRotation == null || straightTicks == 0
if (isStraight && ticksUntilJump >= jumpTicks) {
it.jumping = true
jumpTicks = jumpTicksOpt.random()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ open class RotationsConfigurable(

var fixVelocity by boolean("FixVelocity", fixVelocity)
val resetThreshold by float("ResetThreshold", 2f, 1f..180f)
private val ticksUntilReset by int("TicksUntilReset", 5, 1..30, "ticks")
val ticksUntilReset by int("TicksUntilReset", 5, 1..30, "ticks")
private val changeLook by boolean("ChangeLook", changeLook)

fun toAimPlan(rotation: Rotation, vec: Vec3d? = null, entity: Entity? = null,
Expand Down

0 comments on commit 952d093

Please sign in to comment.