Skip to content

Commit 19f6d0d

Browse files
committed
use original rotation request from break context and ignore if keep ticks is <= 0
1 parent 23aee7e commit 19f6d0d

File tree

5 files changed

+24
-9
lines changed

5 files changed

+24
-9
lines changed

common/src/main/kotlin/com/lambda/interaction/construction/context/BreakContext.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import com.lambda.context.SafeContext
2222
import com.lambda.graphics.renderer.esp.DirectionMask
2323
import com.lambda.graphics.renderer.esp.DirectionMask.exclude
2424
import com.lambda.interaction.construction.verify.TargetState
25-
import com.lambda.interaction.request.rotation.visibilty.RotationTarget
25+
import com.lambda.interaction.request.rotation.RotationRequest
2626
import com.lambda.util.world.raycast.RayCastUtils.distanceTo
2727
import net.minecraft.block.BlockState
2828
import net.minecraft.client.network.ClientPlayerInteractionManager
@@ -38,7 +38,7 @@ import java.awt.Color
3838
data class BreakContext(
3939
override val pov: Vec3d,
4040
override val result: BlockHitResult,
41-
val rotation: RotationTarget,
41+
override val rotation: RotationRequest,
4242
override var checkedState: BlockState,
4343
override val targetState: TargetState,
4444
override var hotbarIndex: Int,
@@ -64,7 +64,7 @@ data class BreakContext(
6464
override fun compareTo(other: BuildContext): Int {
6565
return when (other) {
6666
is BreakContext -> compareBy<BreakContext> {
67-
it.rotation.angleDistance
67+
it.rotation.target.angleDistance
6868
}.compare(this, other)
6969

7070
else -> 1

common/src/main/kotlin/com/lambda/interaction/construction/context/BuildContext.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.lambda.config.groups.BuildConfig
2121
import com.lambda.interaction.construction.result.Drawable
2222
import com.lambda.interaction.construction.verify.TargetState
2323
import com.lambda.interaction.material.container.MaterialContainer
24+
import com.lambda.interaction.request.rotation.RotationRequest
2425
import net.minecraft.block.BlockState
2526
import net.minecraft.item.ItemStack
2627
import net.minecraft.util.hit.BlockHitResult
@@ -30,6 +31,7 @@ import net.minecraft.util.math.Vec3d
3031
interface BuildContext : Comparable<BuildContext>, Drawable {
3132
val pov: Vec3d
3233
val result: BlockHitResult
34+
val rotation: RotationRequest
3335
val distance: Double
3436
val expectedState: BlockState
3537
val targetState: TargetState

common/src/main/kotlin/com/lambda/interaction/construction/context/PlaceContext.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import java.awt.Color
3535
data class PlaceContext(
3636
override val pov: Vec3d,
3737
override val result: BlockHitResult,
38-
val rotation: RotationRequest,
38+
override val rotation: RotationRequest,
3939
override val distance: Double,
4040
override val expectedState: BlockState,
4141
override val checkedState: BlockState,

common/src/main/kotlin/com/lambda/interaction/construction/simulation/BuildSimulator.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ import com.lambda.interaction.request.rotation.Rotation.Companion.rotationTo
4040
import com.lambda.interaction.request.rotation.RotationConfig
4141
import com.lambda.interaction.request.rotation.RotationManager
4242
import com.lambda.interaction.request.rotation.RotationRequest
43-
import com.lambda.interaction.request.rotation.visibilty.*
4443
import com.lambda.interaction.request.rotation.visibilty.VisibilityChecker.CheckedHit
4544
import com.lambda.interaction.request.rotation.visibilty.VisibilityChecker.getVisibleSurfaces
4645
import com.lambda.interaction.request.rotation.visibilty.VisibilityChecker.scanSurfaces
46+
import com.lambda.interaction.request.rotation.visibilty.lookAt
47+
import com.lambda.interaction.request.rotation.visibilty.lookAtBlock
4748
import com.lambda.module.modules.client.TaskFlowModule
4849
import com.lambda.threading.runSafe
4950
import com.lambda.util.BlockUtils
@@ -454,10 +455,13 @@ object BuildSimulator {
454455
/* the player is buried inside the block */
455456
if (boxes.any { it.contains(eye) }) {
456457
currentCast?.blockResult?.let { blockHit ->
458+
val rotationRequest = RotationRequest(
459+
lookAtBlock(pos, config = interact), rotation
460+
)
457461
val breakContext = BreakContext(
458462
eye,
459463
blockHit,
460-
lookAtBlock(pos, config = interact),
464+
rotationRequest,
461465
state,
462466
targetState,
463467
player.inventory.selectedSlot,
@@ -505,10 +509,11 @@ object BuildSimulator {
505509
val bestHit = interact.pointSelection.select(validHits) ?: return acc
506510
val blockHit = bestHit.hit.blockResult ?: return acc
507511
val target = lookAt(bestHit.targetRotation, 0.001)
512+
val request = RotationRequest(target, rotation)
508513
val instant = instantBreakable(state, pos, build.breakSettings.breakThreshold)
509514

510515
val breakContext = BreakContext(
511-
eye, blockHit, target, state, targetState, player.inventory.selectedSlot, instant
516+
eye, blockHit, request, state, targetState, player.inventory.selectedSlot, instant
512517
)
513518

514519
if (gamemode.isCreative) {

common/src/main/kotlin/com/lambda/interaction/request/breaking/BreakManager.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,9 @@ object BreakManager : RequestHandler<BreakRequest>(), PositionBlocking {
266266
rotation = breakingInfos
267267
.firstOrNull { it?.breakConfig?.rotateForBreak == true }
268268
?.let { info ->
269-
info.rotationConfig.request(RotationRequest(info.context.rotation, info.rotationConfig))
269+
// If the simulation cant find a valid rotation to break the block, the existing break context stays and the keep ticks deplete until
270+
if (info.context.rotation.keepTicks <= 0) null
271+
else info.rotationConfig.request(info.context.rotation)
270272
}
271273
}
272274

@@ -560,7 +562,13 @@ object BreakManager : RequestHandler<BreakRequest>(), PositionBlocking {
560562

561563
fun simulate(player: ClientPlayerEntity) {
562564
val result = context.expectedPos
563-
.toStructure(context.targetState)
565+
.toStructure(
566+
if (!context.checkedState.fluidState.isEmpty) {
567+
TargetState.State(context.checkedState.fluidState.blockState)
568+
} else {
569+
TargetState.Air
570+
}
571+
)
564572
.toBlueprint()
565573
.simulate(player.eyePos, interactionConfig, rotationConfig, inventoryConfig, buildConfig)
566574
.firstOrNull()

0 commit comments

Comments
 (0)