Skip to content

Commit 6bd7d89

Browse files
committed
Indicate non raycasting rotation. Not yet possible bc of internal castings
1 parent db4a568 commit 6bd7d89

File tree

5 files changed

+25
-7
lines changed

5 files changed

+25
-7
lines changed

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,13 @@ import com.lambda.interaction.request.rotation.Rotation.Companion.rotationTo
3535
import com.lambda.interaction.request.rotation.RotationConfig
3636
import com.lambda.interaction.request.rotation.RotationManager
3737
import com.lambda.interaction.request.rotation.RotationRequest
38+
import com.lambda.interaction.request.rotation.visibilty.RequestedHit
39+
import com.lambda.interaction.request.rotation.visibilty.RotationTarget
3840
import com.lambda.interaction.request.rotation.visibilty.VisibilityChecker.CheckedHit
3941
import com.lambda.interaction.request.rotation.visibilty.VisibilityChecker.getVisibleSurfaces
4042
import com.lambda.interaction.request.rotation.visibilty.VisibilityChecker.scanSurfaces
4143
import com.lambda.interaction.request.rotation.visibilty.lookAtBlock
44+
import com.lambda.interaction.request.rotation.visibilty.lookAtHit
4245
import com.lambda.module.modules.client.TaskFlowModule
4346
import com.lambda.threading.runSafe
4447
import com.lambda.util.BlockUtils
@@ -58,6 +61,7 @@ import net.minecraft.item.ItemUsageContext
5861
import net.minecraft.registry.RegistryKeys
5962
import net.minecraft.state.property.Properties
6063
import net.minecraft.util.Hand
64+
import net.minecraft.util.hit.BlockHitResult
6165
import net.minecraft.util.math.BlockPos
6266
import net.minecraft.util.math.Box
6367
import net.minecraft.util.math.Direction
@@ -180,7 +184,13 @@ object BuildSimulator {
180184

181185
val newRotation = eye.rotationTo(vec)
182186

183-
val hit = newRotation.rayCast(interact.interactReach, eye) ?: return@scanSurfaces
187+
val hit = if (interact.strictRayCast) {
188+
newRotation.rayCast(interact.interactReach, eye)?.blockResult
189+
} else {
190+
val hitVec = newRotation.castBox(box, interact.interactReach, eye)
191+
BlockHitResult(hitVec, hitSide, hitPos, false)
192+
} ?: return@scanSurfaces
193+
184194
val checked = CheckedHit(hit, newRotation, interact.interactReach)
185195
if (!checked.verify()) return@scanSurfaces
186196

@@ -411,7 +421,13 @@ object BuildSimulator {
411421

412422
val newRotation = eye.rotationTo(vec)
413423

414-
val hit = newRotation.rayCast(interact.interactReach, eye) ?: return@scanSurfaces
424+
val hit = if (interact.strictRayCast) {
425+
newRotation.rayCast(interact.interactReach, eye)?.blockResult
426+
} else {
427+
val hitVec = newRotation.castBox(box, interact.interactReach, eye)
428+
BlockHitResult(hitVec, side, pos, false)
429+
} ?: return@scanSurfaces
430+
415431
val checked = CheckedHit(hit, newRotation, interact.interactReach)
416432
if (!checked.verify()) return@scanSurfaces
417433

common/src/main/kotlin/com/lambda/interaction/request/rotation/RotationRequest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.lambda.interaction.request.rotation
1919

2020
import com.lambda.interaction.request.Priority
2121
import com.lambda.interaction.request.Request
22+
import com.lambda.interaction.request.rotation.Rotation.Companion.dist
2223
import com.lambda.interaction.request.rotation.visibilty.RotationTarget
2324
import com.lambda.threading.runSafe
2425

@@ -42,4 +43,6 @@ data class RotationRequest(
4243
mode == RotationMode.None || runSafe {
4344
target.verify(target)
4445
} == true
46+
47+
fun megaDone() = target.distance < 0.001
4548
}

common/src/main/kotlin/com/lambda/interaction/request/rotation/visibilty/RotationTarget.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.lambda.interaction.request.rotation.Rotation
2222
import com.lambda.interaction.request.rotation.Rotation.Companion.dist
2323
import com.lambda.interaction.request.rotation.Rotation.Companion.rotation
2424
import com.lambda.interaction.request.rotation.RotationConfig
25+
import com.lambda.interaction.request.rotation.RotationManager
2526
import com.lambda.interaction.request.rotation.RotationRequest
2627
import com.lambda.threading.runSafe
2728
import com.lambda.util.collections.resettableLazy
@@ -44,7 +45,7 @@ data class RotationTarget(
4445
}
4546

4647
val distance by lazy {
47-
runSafe { targetRotation.value?.dist(player.rotation) } ?: 1000.0
48+
runSafe { targetRotation.value?.dist(RotationManager.currentRotation) } ?: 1000.0
4849
}
4950

5051
/**

common/src/main/kotlin/com/lambda/task/Task.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ abstract class Task<Result> : Nameable, Muteable {
318318
appendLine("${" ".repeat(level * 4)}${task.name}" + if (task !is RootTask) " [${task.state.display}] ${task.duration}" else "")
319319
val left = task.subTasks.size - maxEntries
320320
if (left > 0) {
321-
appendLine("${" ".repeat(level * 5)}...and $left more tasks")
321+
appendLine("${" ".repeat((level + 1) * 4)}...and $left more tasks")
322322
}
323323
task.subTasks.takeLast(maxEntries).forEach {
324324
appendTaskTree(it, level + 1)

common/src/main/kotlin/com/lambda/task/tasks/BuildTask.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class BuildTask @Ta5kBuilder constructor(
7979
init {
8080
listen<TickEvent.Pre> {
8181
currentInteraction?.let { context ->
82-
if (context.shouldRotate(build) && !context.rotation.done) return@listen
82+
if (context.shouldRotate(build) && !context.rotation.megaDone()) return@listen
8383
context.interact(interact.swingHand)
8484
}
8585
}
@@ -163,7 +163,6 @@ class BuildTask @Ta5kBuilder constructor(
163163
is BuildResult.Contextual -> {
164164
if (pendingInteractions.size >= build.maxPendingInteractions) return@listen
165165

166-
// info("Swapping interaction to ${bestResult.context.expectedPos} ${bestResult.context.distance}")
167166
currentInteraction = bestResult.context
168167
}
169168

@@ -199,7 +198,6 @@ class BuildTask @Ta5kBuilder constructor(
199198
}
200199

201200
listen<WorldEvent.BlockUpdate.Server>(alwaysListen = true) { event ->
202-
// info("Update at ${event.pos.toShortString()}: ${event.newState.block.name.string}")
203201
pendingInteractions.firstOrNull { it.expectedPos == event.pos }?.let { context ->
204202
pendingInteractions.remove(context)
205203
if (!context.targetState.matches(event.newState, event.pos, world)) return@let

0 commit comments

Comments
 (0)