@@ -39,8 +39,10 @@ import com.lambda.interaction.construction.simulation.BuildSimulator.simulate
3939import com.lambda.interaction.construction.simulation.Simulation.Companion.simulation
4040import com.lambda.interaction.construction.verify.TargetState
4141import com.lambda.interaction.material.transfer.TransactionExecutor.Companion.transfer
42+ import com.lambda.interaction.request.breaking.BreakManager
4243import com.lambda.interaction.request.breaking.BreakRequest
4344import com.lambda.interaction.request.hotbar.HotbarConfig
45+ import com.lambda.interaction.request.placing.PlaceManager
4446import com.lambda.interaction.request.placing.PlaceRequest
4547import com.lambda.interaction.request.rotation.RotationManager.onRotate
4648import 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