diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldBreezilyTechnique.kt b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldBreezilyTechnique.kt index acf7937aa37..33819d839d6 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldBreezilyTechnique.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldBreezilyTechnique.kt @@ -61,7 +61,7 @@ object ScaffoldBreezilyTechnique : ScaffoldTechnique("Breezily") { ), FaceHandlingOptions(CenterTargetPositionFactory), stackToPlaceWith = bestStack, - PlayerLocationOnPlacement(position = predictedPos, pose = predictedPose), + PlayerLocationOnPlacement(position = predictedPos, pose = predictedPose) ) return findBestBlockPlacementTarget(getTargetedPosition(predictedPos.toBlockPos()), searchOptions) diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldGodBridgeTechnique.kt b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldGodBridgeTechnique.kt index 309fff314d0..fd64c7ec654 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldGodBridgeTechnique.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldGodBridgeTechnique.kt @@ -135,7 +135,7 @@ object ScaffoldGodBridgeTechnique : ScaffoldTechnique("GodBridge"), ScaffoldLedg ), FaceHandlingOptions(CenterTargetPositionFactory), stackToPlaceWith = bestStack, - PlayerLocationOnPlacement(position = predictedPos, pose = predictedPose), + PlayerLocationOnPlacement(position = predictedPos, pose = predictedPose) ) return findBestBlockPlacementTarget(getTargetedPosition(predictedPos.toBlockPos()), searchOptions) diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldNormalTechnique.kt b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldNormalTechnique.kt index 16f2ff14086..00d550fcfa4 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldNormalTechnique.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/ScaffoldNormalTechnique.kt @@ -18,6 +18,7 @@ */ package net.ccbluex.liquidbounce.features.module.modules.world.scaffold.techniques +import net.ccbluex.liquidbounce.config.types.NamedChoice import net.ccbluex.liquidbounce.event.events.PlayerAfterJumpEvent import net.ccbluex.liquidbounce.event.handler import net.ccbluex.liquidbounce.features.module.modules.movement.ModuleFreeze @@ -50,8 +51,15 @@ import kotlin.random.Random */ object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") { - private val aimMode by enumChoice("RotationMode", AimMode.STABILIZED) - private val requiresSight by boolean("RequiresSight", false) + private val rotationMode by enumChoice("RotationMode", AimMode.STABILIZED) + private val visibilityMode by enumChoice("VisibilityMode", VisibilityMode.VISIBLE) + + @Suppress("unused") + private enum class VisibilityMode(override val choiceName: String) : NamedChoice { + VISIBLE_AND_RAYTRACED("VisibleAndRaytraced"), + VISIBLE("Visible"), + ALLOW_NOT_VISIBLE("AllowNotVisible") + } init { tree(ScaffoldEagleFeature) @@ -95,7 +103,8 @@ object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") { ), FaceHandlingOptions( facePositionFactory, - considerFacingAwayFaces = ScaffoldDownFeature.shouldGoDown + considerFacingAwayFaces = visibilityMode == VisibilityMode.ALLOW_NOT_VISIBLE + || ScaffoldDownFeature.shouldGoDown ), stackToPlaceWith = bestStack, PlayerLocationOnPlacement(position = predictedPos, pose = predictedPose), @@ -115,12 +124,12 @@ object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") { } } - if (requiresSight) { + if (visibilityMode == VisibilityMode.VISIBLE_AND_RAYTRACED) { val target = target ?: return null val raycast = raycast(rotation = target.rotation) - if (raycast.type == HitResult.Type.BLOCK && raycast.blockPos == target.interactedBlockPos) { - return target.rotation + if (raycast.type != HitResult.Type.BLOCK || raycast.blockPos != target.interactedBlockPos) { + return null } } @@ -136,7 +145,7 @@ object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") { } // Allow a non-visible hit result - if (ScaffoldDownFeature.shouldGoDown) { + if (visibilityMode == VisibilityMode.ALLOW_NOT_VISIBLE || ScaffoldDownFeature.shouldGoDown) { return target.blockHitResult } @@ -150,7 +159,7 @@ object ScaffoldNormalTechnique : ScaffoldTechnique("Normal") { randomization, ) - return when (aimMode) { + return when (rotationMode) { AimMode.CENTER -> CenterTargetPositionFactory AimMode.RANDOM -> RandomTargetPositionFactory AimMode.STABILIZED -> StabilizedRotationTargetPositionFactory(config, optimalLine) diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/normal/ScaffoldEagleFeature.kt b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/normal/ScaffoldEagleFeature.kt index fefe3714a01..5988d2ac1bb 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/normal/ScaffoldEagleFeature.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/features/module/modules/world/scaffold/techniques/normal/ScaffoldEagleFeature.kt @@ -40,12 +40,12 @@ object ScaffoldEagleFeature : ToggleableConfigurable(ScaffoldNormalTechnique, "E // Makes you sneak until first block placed, so with eagle enabled you won't fall off, when enabled private var placedBlocks = 0 - val stateUpdateHandler = - handler(priority = EventPriorityConvention.SAFETY_FEATURE) { - if (mode == EagleMode.INPUT && shouldEagle(it.directionalInput)) { - it.sneak = true - } + @Suppress("unused") + val stateUpdateHandler = handler(priority = EventPriorityConvention.SAFETY_FEATURE) { event -> + if (mode == EagleMode.INPUT && shouldEagle(event.directionalInput)) { + event.sneak = true } + } fun shouldEagle(input: DirectionalInput): Boolean { if (ScaffoldDownFeature.shouldFallOffBlock()) {