Skip to content

Commit 24fda9c

Browse files
committed
Better error handling
1 parent 9daee66 commit 24fda9c

File tree

7 files changed

+27
-16
lines changed

7 files changed

+27
-16
lines changed

common/src/main/kotlin/com/lambda/interaction/construction/result/BreakResult.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.lambda.interaction.material.StackSelection.Companion.select
99
import com.lambda.interaction.material.StackSelection.Companion.selectStack
1010
import com.lambda.interaction.material.container.MainHandContainer
1111
import com.lambda.task.Task.Companion.emptyTask
12+
import com.lambda.task.Task.Companion.failTask
1213
import com.lambda.task.tasks.BreakBlock.Companion.breakBlock
1314
import com.lambda.task.tasks.GoalTask.Companion.moveToGoalUntil
1415
import net.minecraft.block.BlockState
@@ -50,7 +51,7 @@ sealed class BreakResult : BuildResult() {
5051
) : Resolvable, BreakResult() {
5152
override val rank = Rank.BREAK_NOT_EXPOSED
5253

53-
override val resolve get() = emptyTask("Block is not exposed to air.")
54+
override val resolve get() = failTask("Block is not exposed to air.")
5455

5556
override fun compareTo(other: ComparableResult<Rank>): Int {
5657
return when (other) {
@@ -77,7 +78,7 @@ sealed class BreakResult : BuildResult() {
7778
?.solve ?: run {
7879
selectStack {
7980
isItem(badItem).not()
80-
}.transfer(MainHandContainer)?.solve ?: emptyTask("No item found or space") // ToDo: Should throw error
81+
}.transfer(MainHandContainer)?.solve ?: failTask("No item found or space")
8182
}
8283

8384
override fun compareTo(other: ComparableResult<Rank>): Int {

common/src/main/kotlin/com/lambda/interaction/construction/result/BuildResult.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.lambda.interaction.material.StackSelection.Companion.select
77
import com.lambda.interaction.material.container.MainHandContainer
88
import com.lambda.task.Task
99
import com.lambda.task.Task.Companion.emptyTask
10+
import com.lambda.task.Task.Companion.failTask
1011
import com.lambda.task.tasks.GoalTask.Companion.moveNearBlock
1112
import com.lambda.task.tasks.GoalTask.Companion.moveToGoal
1213
import com.lambda.task.tasks.GoalTask.Companion.moveUntilLoaded
@@ -136,7 +137,7 @@ abstract class BuildResult : ComparableResult<Rank> {
136137
override val rank = Rank.WRONG_ITEM
137138

138139
override val resolve get() =
139-
neededItem.select().transfer(MainHandContainer)?.solve ?: emptyTask("Item ${neededItem.name.string} not found") // ToDo: Should throw error
140+
neededItem.select().transfer(MainHandContainer)?.solve ?: failTask("Item ${neededItem.name.string} not found")
140141

141142
override fun compareTo(other: ComparableResult<Rank>): Int {
142143
return when (other) {
@@ -159,7 +160,7 @@ abstract class BuildResult : ComparableResult<Rank> {
159160
override val rank = Rank.WRONG_ITEM
160161

161162
override val resolve get() =
162-
neededStack.select().transfer(MainHandContainer)?.solve ?: emptyTask() // ToDo: Should throw error
163+
neededStack.select().transfer(MainHandContainer)?.solve ?: failTask("Stack ${neededStack.name.string} not found")
163164

164165
override fun compareTo(other: ComparableResult<Rank>): Int {
165166
return when (other) {

common/src/main/kotlin/com/lambda/interaction/material/container/EnderChestContainer.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.lambda.interaction.material.MaterialContainer
44
import com.lambda.interaction.material.StackSelection
55
import com.lambda.task.Task
66
import com.lambda.task.Task.Companion.emptyTask
7+
import com.lambda.task.Task.Companion.failTask
78
import com.lambda.task.tasks.InventoryTask.Companion.deposit
89
import com.lambda.task.tasks.InventoryTask.Companion.withdraw
910
import com.lambda.task.tasks.OpenContainer.Companion.openContainer
@@ -31,15 +32,15 @@ object EnderChestContainer : MaterialContainer(Rank.ENDER_CHEST) {
3132
// }
3233

3334
override fun withdraw(selection: StackSelection): Task<*> {
34-
val pos = placePos ?: return emptyTask("No placePos found for EnderChestContainer")
35+
val pos = placePos ?: return failTask("No placePos found for EnderChestContainer")
3536
return openContainer<GenericContainerScreenHandler>(pos)
3637
.onSuccess { _, screen ->
3738
withdraw(screen, selection)
3839
}
3940
}
4041

4142
override fun deposit(selection: StackSelection): Task<*> {
42-
val pos = placePos ?: return emptyTask("No placePos found for EnderChestContainer")
43+
val pos = placePos ?: return failTask("No placePos found for EnderChestContainer")
4344
return openContainer<GenericContainerScreenHandler>(pos)
4445
.onSuccess { _, screen ->
4546
deposit(screen, selection)

common/src/main/kotlin/com/lambda/interaction/material/container/ShulkerBoxContainer.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.lambda.interaction.material.MaterialContainer
55
import com.lambda.interaction.material.StackSelection
66
import com.lambda.task.Task
77
import com.lambda.task.Task.Companion.emptyTask
8+
import com.lambda.task.Task.Companion.failTask
89
import com.lambda.task.tasks.BuildStructure.Companion.breakAndCollectBlock
910
import com.lambda.task.tasks.InventoryTask.Companion.deposit
1011
import com.lambda.task.tasks.InventoryTask.Companion.withdraw
@@ -37,17 +38,17 @@ data class ShulkerBoxContainer(
3738
}
3839

3940
override fun withdraw(selection: StackSelection): Task<*> {
40-
val open = openScreen ?: return emptyTask("No open screen found for ShulkerBoxContainer")
41-
val place = placePosition ?: return emptyTask("No place position found for ShulkerBoxContainer")
41+
val open = openScreen ?: return failTask("No open screen found for ShulkerBoxContainer")
42+
val place = placePosition ?: return failTask("No place position found for ShulkerBoxContainer")
4243
info("Withdrawing $selection from ${shulkerStack.name.string}")
4344
return withdraw(open, selection).onSuccess { withdraw, _ ->
4445
breakAndCollectBlock(place).start(withdraw)
4546
}
4647
}
4748

4849
override fun deposit(selection: StackSelection): Task<*> {
49-
val open = openScreen ?: return emptyTask("No open screen found for ShulkerBoxContainer")
50-
val place = placePosition ?: return emptyTask("No place position found for ShulkerBoxContainer")
50+
val open = openScreen ?: return failTask("No open screen found for ShulkerBoxContainer")
51+
val place = placePosition ?: return failTask("No place position found for ShulkerBoxContainer")
5152
info("Depositing $selection to ${shulkerStack.name.string}")
5253
return deposit(open, selection).onSuccess { deposit, _ ->
5354
breakAndCollectBlock(place).start(deposit)

common/src/main/kotlin/com/lambda/interaction/material/transfer/TransferResult.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.lambda.interaction.material.transfer
33
import com.lambda.interaction.material.MaterialContainer
44
import com.lambda.interaction.material.StackSelection
55
import com.lambda.task.Task
6+
import com.lambda.task.Task.Companion.failTask
67

78
abstract class TransferResult {
89
abstract val solve: Task<*>
@@ -23,11 +24,11 @@ abstract class TransferResult {
2324

2425
data object NoSpace : TransferResult() {
2526
// ToDo: Needs inventory space resolver. compressing or disposing
26-
override val solve = Task.emptyTask("NoSpace")
27+
override val solve = failTask("NoSpace")
2728
}
2829

2930
data class MissingItems(val missing: Int) : TransferResult() {
3031
// ToDo: Find other satisfying permutations
31-
override val solve = Task.emptyTask("MissingItems")
32+
override val solve = failTask("MissingItems")
3233
}
3334
}

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -439,15 +439,21 @@ abstract class Task<Result>(
439439
val MAX_DEPTH = 20
440440
const val MAX_DEBUG_ENTRIES = 15
441441

442-
interface EmptyTask
443-
444442
@Ta5kBuilder
445443
fun emptyTask(
446444
name: String = "EmptyTask",
447-
): Task<Unit> = object : EmptyTask, Task<Unit>() {
445+
): Task<Unit> = object : Task<Unit>() {
448446
init { this.name = name }
449447
override fun SafeContext.onStart() { success(Unit) }
450448
}
449+
450+
@Ta5kBuilder
451+
fun failTask(
452+
message: String
453+
): Task<Unit> = object : Task<Unit>() {
454+
init { this.name = "FailTask" }
455+
override fun SafeContext.onStart() { failure(message) }
456+
}
451457

452458
@Ta5kBuilder
453459
fun buildTask(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import com.lambda.util.BlockUtils.blockPos
1414
import net.minecraft.item.ItemStack
1515
import net.minecraft.util.math.BlockPos
1616

17-
class PlaceContainer(
17+
class PlaceContainer @Ta5kBuilder constructor(
1818
val stack: ItemStack,
1919
) : Task<BlockPos>() {
2020
override fun SafeContext.onStart() {

0 commit comments

Comments
 (0)