Skip to content

Commit 253bd83

Browse files
committed
Consistent task builder
1 parent 0a45e44 commit 253bd83

File tree

10 files changed

+35
-54
lines changed

10 files changed

+35
-54
lines changed

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

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.lambda.task
22

3+
import com.lambda.Lambda.LOG
34
import com.lambda.context.SafeContext
45
import com.lambda.event.Event
56
import com.lambda.event.EventFlow
@@ -124,6 +125,9 @@ abstract class Task<Result>(
124125
}
125126
}
126127

128+
@DslMarker
129+
annotation class Ta5kBuilder // Name is used to force the dsl style yellow (name hash)
130+
127131
@Ta5kBuilder
128132
open fun SafeContext.onStart() {}
129133

@@ -135,12 +139,12 @@ abstract class Task<Result>(
135139
runSafe { onStart() }
136140
this.parent?.let { par ->
137141
par.subTasks.add(this)
138-
info("${par.name} started this task.")
142+
LOG.info("${par.name} started $name")
139143
if (pauseParent && par.isActivated) {
140-
info("Pausing parent ${par.name}")
144+
LOG.info("$name pausing parent ${par.name}")
141145
par.deactivate()
142146
}
143-
} ?: info("Root started this task")
147+
} ?: LOG.info("Root started $name")
144148

145149
activate()
146150
return this
@@ -149,19 +153,21 @@ abstract class Task<Result>(
149153
@Ta5kBuilder
150154
private fun activate() {
151155
subTasks.firstOrNull { !it.isCompleted }?.let {
152-
info("Starting subtask ${it.name}")
156+
LOG.info("$name starting subtask ${it.name}")
153157
deactivate()
154158
it.start(this)
155159
} ?: run {
156-
info("Activated")
160+
if (isActivated) return
161+
162+
LOG.info("$name activated")
157163
state = State.ACTIVATED
158164
startListening()
159165
}
160166
}
161167

162168
@Ta5kBuilder
163169
fun deactivate() {
164-
info("Deactivated")
170+
LOG.info("$name deactivated")
165171
state = State.DEACTIVATED
166172
stopListening()
167173
}
@@ -172,13 +178,13 @@ abstract class Task<Result>(
172178

173179
if (executions < repeats) {
174180
executions++
175-
this@Task.info("Repeating task $executions/$repeats...")
181+
LOG.info("Repeating $name $executions/$repeats...")
176182
onRepeat(this@Task, result, executions)
177183
reset()
178184
return
179185
}
180186

181-
this@Task.info("Task completed successfully after $attempted retries and $executions executions.")
187+
LOG.info("$name completed successfully after $attempted retries and $executions executions.")
182188
state = State.COMPLETED
183189
tidyUp()
184190
}
@@ -187,7 +193,8 @@ abstract class Task<Result>(
187193
fun cancel() {
188194
cancelSubTasks()
189195
state = State.CANCELLED
190-
tidyUp()
196+
stopListening()
197+
BaritoneUtils.cancel()
191198
runSafe { onCancel() }
192199
}
193200

@@ -236,14 +243,7 @@ abstract class Task<Result>(
236243
private fun tidyUp() {
237244
stopListening()
238245
BaritoneUtils.cancel()
239-
parent?.let {
240-
// it.subTasks.remove(this)
241-
if (it.isDeactivated) {
242-
it.activate()
243-
} else {
244-
info("Parent ${it.name} is activated, not reactivating")
245-
}
246-
}
246+
parent?.activate()
247247
}
248248

249249
@Ta5kBuilder
@@ -369,7 +369,7 @@ abstract class Task<Result>(
369369
return this
370370
}
371371

372-
@TaskCha1nBuilder
372+
@Ta5kBuilder
373373
fun withSubTasks(subTaskBuilder: SubTaskBuilder.(Task<*>) -> Unit): Task<Result> {
374374
with(SubTaskBuilder()) {
375375
subTaskBuilder(this@Task)
@@ -378,7 +378,7 @@ abstract class Task<Result>(
378378
return this
379379
}
380380

381-
@TaskCha1nBuilder
381+
@Ta5kBuilder
382382
inline fun <reified T : Event> withListener(
383383
event: TickEvent.Pre, crossinline action: SafeContext.(Task<Result>) -> Unit
384384
): Task<Result> {
@@ -388,7 +388,7 @@ abstract class Task<Result>(
388388
return this
389389
}
390390

391-
@TaskCha1nBuilder
391+
@Ta5kBuilder
392392
fun withName(name: String): Task<Result> {
393393
this.name = name
394394
return this
@@ -401,12 +401,12 @@ abstract class Task<Result>(
401401
}
402402

403403
companion object {
404-
@TaskCha1nBuilder
404+
@Ta5kBuilder
405405
fun emptyTask() = object : Task<Unit>() {
406406
override fun SafeContext.onStart() {}
407407
}
408408

409-
@TaskCha1nBuilder
409+
@Ta5kBuilder
410410
fun buildTask(
411411
block: SafeContext.() -> Unit
412412
) = object : Task<Unit>() {
@@ -415,7 +415,7 @@ abstract class Task<Result>(
415415
}
416416
}
417417

418-
@TaskCha1nBuilder
418+
@Ta5kBuilder
419419
inline fun <reified R> buildTaskWithReturn(
420420
crossinline block: SafeContext.() -> Unit
421421
) = object : Task<R>() {

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

Lines changed: 0 additions & 7 deletions
This file was deleted.

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.lambda.interaction.material.ContainerManager
55
import com.lambda.interaction.material.ContainerManager.findContainerWithSelection
66
import com.lambda.interaction.material.StackSelection
77
import com.lambda.task.Task
8-
import com.lambda.task.TaskCha1nBuilder
98

109
class AcquireMaterial(
1110
val selection: StackSelection
@@ -22,7 +21,7 @@ class AcquireMaterial(
2221
}
2322

2423
companion object {
25-
@TaskCha1nBuilder
24+
@Ta5kBuilder
2625
fun acquireStack(selection: StackSelection) =
2726
AcquireMaterial(selection)
2827
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ import com.lambda.interaction.InteractionConfig
99
import com.lambda.interaction.rotation.IRotationConfig
1010
import com.lambda.interaction.visibilty.VisibilityChecker.getVisibleSurfaces
1111
import com.lambda.module.modules.client.TaskFlow
12-
import com.lambda.task.Ta5kBuilder
1312
import com.lambda.task.Task
14-
import com.lambda.task.TaskCha1nBuilder
1513
import com.lambda.util.BlockUtils.instantBreakable
1614
import com.lambda.util.BlockUtils.blockState
1715
import com.lambda.util.world.raycast.RayCastUtils.blockResult
@@ -95,7 +93,7 @@ class BreakBlock @Ta5kBuilder constructor(
9593
}
9694

9795
companion object {
98-
@TaskCha1nBuilder
96+
@Ta5kBuilder
9997
fun uncheckedBreak(
10098
blockPos: BlockPos,
10199
rotationConfig: IRotationConfig = TaskFlow.rotationSettings,

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.lambda.interaction.construction.result.BuildResult
1212
import com.lambda.interaction.construction.result.Resolvable
1313
import com.lambda.interaction.construction.verify.TargetState
1414
import com.lambda.task.Task
15-
import com.lambda.task.TaskCha1nBuilder
1615
import com.lambda.util.Communication.warn
1716
import net.minecraft.util.math.BlockPos
1817
import net.minecraft.util.math.Direction
@@ -64,7 +63,7 @@ class BuildStructure(
6463
}
6564

6665
companion object {
67-
@TaskCha1nBuilder
66+
@Ta5kBuilder
6867
fun buildStructure(
6968
collectDrops: Boolean = false,
7069
skipWeakBlocks: Boolean = false,
@@ -79,15 +78,15 @@ class BuildStructure(
7978
finishOnDone
8079
)
8180

82-
@TaskCha1nBuilder
81+
@Ta5kBuilder
8382
fun breakAndCollectBlock(
8483
blockPos: BlockPos
8584
) = BuildStructure(
8685
blockPos.toStructure(TargetState.Air).toBlueprint(),
8786
collectDrops = true
8887
)
8988

90-
@TaskCha1nBuilder
89+
@Ta5kBuilder
9190
fun breakBlock(
9291
blockPos: BlockPos
9392
) = BuildStructure(

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.lambda.context.SafeContext
66
import com.lambda.event.events.TickEvent
77
import com.lambda.event.listener.SafeListener.Companion.listener
88
import com.lambda.task.Task
9-
import com.lambda.task.TaskCha1nBuilder
109
import com.lambda.util.BaritoneUtils
1110
import net.minecraft.util.math.BlockPos
1211

@@ -27,7 +26,7 @@ class GoalTask(
2726
}
2827

2928
companion object {
30-
@TaskCha1nBuilder
29+
@Ta5kBuilder
3130
fun moveIntoEntityRange(blockPos: BlockPos) =
3231
GoalTask(GoalXZ(blockPos.x, blockPos.z))
3332
}
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
package com.lambda.task.tasks
22

33
import com.lambda.Lambda.LOG
4-
import com.lambda.context.SafeContext
54
import com.lambda.event.events.TickEvent
65
import com.lambda.event.listener.SafeListener.Companion.listener
7-
import com.lambda.task.Ta5kBuilder
86
import com.lambda.task.Task
9-
import com.lambda.task.TaskCha1nBuilder
10-
import kotlinx.coroutines.delay
117

128
class HelloWorldTask @Ta5kBuilder constructor() : Task<Unit>() {
139
init {
@@ -21,9 +17,9 @@ class HelloWorldTask @Ta5kBuilder constructor() : Task<Unit>() {
2117
}
2218

2319
companion object {
24-
@TaskCha1nBuilder
20+
@Ta5kBuilder
2521
fun Task<*>.helloWorld() = HelloWorldTask()
26-
@TaskCha1nBuilder
22+
@Ta5kBuilder
2723
fun SubTaskBuilder.helloWorld() = HelloWorldTask().also { tasks.add(it) }
2824
}
2925
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.lambda.event.events.TickEvent
44
import com.lambda.event.listener.SafeListener.Companion.listener
55
import com.lambda.interaction.material.StackSelection
66
import com.lambda.task.Task
7-
import com.lambda.task.TaskCha1nBuilder
87
import com.lambda.util.item.ItemStackUtils.equal
98
import com.lambda.util.primitives.extension.containerSlots
109
import com.lambda.util.primitives.extension.inventorySlots
@@ -40,14 +39,14 @@ class InventoryTask<H : ScreenHandler>(
4039
}
4140

4241
companion object {
43-
@TaskCha1nBuilder
42+
@Ta5kBuilder
4443
inline fun <reified H : ScreenHandler> withdraw(screen: H, selection: StackSelection) =
4544
InventoryTask(
4645
screen,
4746
selection.filterSlots(screen.containerSlots)
4847
)
4948

50-
@TaskCha1nBuilder
49+
@Ta5kBuilder
5150
inline fun <reified H : ScreenHandler> deposit(screen: H, selection: StackSelection) =
5251
InventoryTask(
5352
screen,

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.lambda.interaction.InteractionConfig
77
import com.lambda.interaction.rotation.IRotationConfig
88
import com.lambda.module.modules.client.TaskFlow
99
import com.lambda.task.Task
10-
import com.lambda.task.TaskCha1nBuilder
1110
import com.lambda.util.world.raycast.RayCastUtils.blockResult
1211
import net.minecraft.screen.ScreenHandler
1312
import net.minecraft.util.Hand
@@ -53,7 +52,7 @@ class OpenContainer<H : ScreenHandler>(
5352
}
5453

5554
companion object {
56-
@TaskCha1nBuilder
55+
@Ta5kBuilder
5756
inline fun <reified T : ScreenHandler> openContainer(
5857
blockPos: BlockPos,
5958
waitForSlotLoad: Boolean = true

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.lambda.task.tasks
22

33
import com.lambda.task.Task
4-
import com.lambda.task.TaskCha1nBuilder
54
import net.minecraft.item.ItemStack
65
import net.minecraft.util.math.BlockPos
76

@@ -10,7 +9,7 @@ class PlaceContainer(
109
) : Task<BlockPos>() {
1110

1211
companion object {
13-
@TaskCha1nBuilder
12+
@Ta5kBuilder
1413
fun placeContainer(stack: ItemStack) =
1514
PlaceContainer(stack)
1615
}

0 commit comments

Comments
 (0)