Skip to content

Commit 6edb0a6

Browse files
committed
improved build task stuff
1 parent f744366 commit 6edb0a6

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

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

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ import com.lambda.interaction.construction.simulation.BuildSimulator.simulate
3939
import com.lambda.interaction.construction.simulation.Simulation.Companion.simulation
4040
import com.lambda.interaction.construction.verify.TargetState
4141
import com.lambda.interaction.material.transfer.TransactionExecutor.Companion.transfer
42+
import com.lambda.interaction.request.breaking.BreakManager
4243
import com.lambda.interaction.request.breaking.BreakRequest
4344
import com.lambda.interaction.request.hotbar.HotbarConfig
45+
import com.lambda.interaction.request.placing.PlaceManager
4446
import com.lambda.interaction.request.placing.PlaceRequest
4547
import com.lambda.interaction.request.rotation.RotationManager.onRotate
4648
import com.lambda.module.modules.client.TaskFlowModule
@@ -101,13 +103,21 @@ class BuildTask @Ta5kBuilder constructor(
101103
.plus(pendingInteractions.toList())
102104
// .plus(sim.goodPositions())
103105

106+
val resultsNotBlocked = results.filter { result ->
107+
when(result) {
108+
is BreakResult.Break -> { BreakManager.blockedPositions.none { blocked -> blocked == result.blockPos } }
109+
is PlaceResult.Place -> { PlaceManager.blockedPositions.none { blocked -> blocked == result.blockPos } }
110+
else -> true
111+
}
112+
}
113+
.sorted()
114+
104115
if (build.breakSettings.breaksPerTick > 1) {
105-
val instantResults = results.filterIsInstance<BreakResult.Break>()
116+
val instantResults = resultsNotBlocked.filterIsInstance<BreakResult.Break>()
106117
.filter { it.context.instantBreak }
107-
.sorted()
108118
.take(build.breakSettings.breaksPerTick)
109119

110-
instantResults.firstOrNull()?.let {
120+
if (instantResults.isNotEmpty()) {
111121
build.breakSettings.request(
112122
BreakRequest(
113123
instantResults.map { it.context }, build, rotation, hotbar,
@@ -118,9 +128,6 @@ class BuildTask @Ta5kBuilder constructor(
118128
}
119129
}
120130

121-
val resultsNotBlocked = results.filterNot { result ->
122-
result.blockPos in pendingInteractions.map { it.expectedPos }
123-
}.sorted()
124131
val bestResult = resultsNotBlocked.firstOrNull() ?: return@onRotate
125132
when (bestResult) {
126133
is BuildResult.Done,
@@ -150,19 +157,25 @@ class BuildTask @Ta5kBuilder constructor(
150157

151158
is BuildResult.Contextual -> {
152159
if (pendingInteractions.size >= build.maxPendingInteractions) return@onRotate
153-
val breakContexts = resultsNotBlocked.filterIsInstance<BreakResult.Break>().map { it.context }
154-
if (breakContexts.isNotEmpty()) {
155-
val request = BreakRequest(
156-
breakContexts, build, rotation, hotbar,
157-
onBreak = { breaks++ },
158-
) { item -> if (collectDrops) dropsToCollect.add(item) }
159-
build.breakSettings.request(request)
160-
return@onRotate
160+
when (bestResult) {
161+
is BreakResult.Break -> {
162+
val breakContexts = resultsNotBlocked
163+
.filterIsInstance<BreakResult.Break>()
164+
.map { it.context }
165+
166+
val request = BreakRequest(
167+
breakContexts, build, rotation, hotbar,
168+
onBreak = { breaks++ }
169+
) { item -> if (collectDrops) dropsToCollect.add(item) }
170+
build.breakSettings.request(request)
171+
return@onRotate
172+
}
173+
is PlaceResult.Place -> {
174+
build.placeSettings.request(
175+
PlaceRequest(bestResult.context, build, rotation, hotbar, interact) { placements++ }
176+
)
177+
}
161178
}
162-
if (bestResult !is PlaceResult.Place) return@onRotate
163-
build.placeSettings.request(
164-
PlaceRequest(bestResult.context, build, rotation, hotbar, interact) { placements++ }
165-
)
166179
}
167180

168181
is Resolvable -> {

0 commit comments

Comments
 (0)