Skip to content

Commit 448aaec

Browse files
committed
Task control with registry, block break tests
1 parent 15d10bf commit 448aaec

32 files changed

+316
-300
lines changed

common/src/main/kotlin/com/lambda/config/Configuration.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.lambda.config.configurations.ModuleConfig
99
import com.lambda.event.EventFlow.lambdaScope
1010
import com.lambda.event.events.ClientEvent
1111
import com.lambda.event.listener.UnsafeListener.Companion.unsafeListener
12+
import com.lambda.threading.runIO
1213
import com.lambda.util.Communication.info
1314
import com.lambda.util.Communication.logError
1415
import com.lambda.util.StringUtils.capitalize
@@ -81,7 +82,7 @@ abstract class Configuration : Jsonable {
8182
}
8283

8384
fun tryLoad() {
84-
lambdaScope.launch(Dispatchers.IO) {
85+
runIO {
8586
runCatching { load(primary) }
8687
.onSuccess {
8788
val message = "${configName.capitalize()} config loaded."
@@ -108,7 +109,7 @@ abstract class Configuration : Jsonable {
108109
}
109110

110111
fun trySave() {
111-
lambdaScope.launch(Dispatchers.IO) {
112+
runIO {
112113
runCatching { save() }
113114
.onSuccess {
114115
val message = "Saved ${configName.capitalize()} config."

common/src/main/kotlin/com/lambda/core/Loader.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@ package com.lambda.core
33
import com.lambda.Lambda
44
import com.lambda.Lambda.LOG
55
import com.lambda.command.CommandManager
6-
import com.lambda.config.configurations.GuiConfig
76
import com.lambda.graphics.renderer.gui.font.LambdaFont
87
import com.lambda.gui.impl.clickgui.GuiConfigurable
9-
import com.lambda.gui.impl.clickgui.LambdaClickGui
108
import com.lambda.interaction.PlayerPacketManager
119
import com.lambda.interaction.RotationManager
1210
import com.lambda.module.ModuleRegistry
13-
import com.lambda.task.tasks.TaskTester
11+
import com.lambda.task.TaskRegistry
1412
import com.lambda.util.Communication.ascii
1513
import kotlin.system.measureTimeMillis
1614

@@ -27,8 +25,6 @@ object Loader {
2725
ascii.split("\n").forEach { LOG.info(it) }
2826
LOG.info("Initializing ${Lambda.MOD_NAME} ${Lambda.VERSION}")
2927

30-
TaskTester
31-
3228
val initTime = measureTimeMillis {
3329
loadables.forEach { loadable ->
3430
var info: String
@@ -42,6 +38,7 @@ object Loader {
4238

4339
LOG.info("${Lambda.MOD_NAME} ${Lambda.VERSION} was successfully initialized (${initTime}ms)")
4440

41+
TaskRegistry
4542
GuiConfigurable // ToDo: Find more elegant solution
4643
}
4744
}

common/src/main/kotlin/com/lambda/event/EventFlow.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.lambda.event
22

3+
import com.lambda.context.SafeContext
34
import com.lambda.event.callback.ICancellable
45
import com.lambda.event.listener.Listener
56
import com.lambda.threading.runConcurrent
7+
import com.lambda.threading.runSafe
68
import kotlinx.coroutines.*
79
import kotlinx.coroutines.channels.BufferOverflow
810
import kotlinx.coroutines.flow.*
@@ -48,6 +50,14 @@ object EventFlow {
4850
}
4951

5052
suspend inline fun <reified E : Event> awaitEvent(
53+
noinline predicate: SafeContext.(E) -> Boolean = { true },
54+
) = concurrentFlow.filterIsInstance<E>().first {
55+
runSafe {
56+
predicate(it)
57+
} ?: false
58+
}
59+
60+
suspend inline fun <reified E : Event> awaitEventUnsafe(
5161
noinline predicate: (E) -> Boolean = { true },
5262
) = concurrentFlow.filterIsInstance<E>().first(predicate)
5363

common/src/main/kotlin/com/lambda/event/events/RotationEvent.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ abstract class RotationEvent : Event {
3131
init {
3232
// Always check if baritone wants to rotate as well
3333
RotationManager.BaritoneProcessor.baritoneContext?.let { context ->
34-
this.context = RotationContext(context.rotation, context.config)
34+
this.context = context
3535
}
3636
}
3737

@@ -53,16 +53,15 @@ abstract class RotationEvent : Event {
5353
blockPos: BlockPos,
5454
rotationConfig: IRotationConfig = TaskFlow.rotationSettings,
5555
interactionConfig: InteractionConfig = TaskFlow.interactionSettings,
56-
sides: Set<Direction> = emptySet(),
57-
priority: Int = 0,
56+
sides: Set<Direction> = emptySet()
5857
) = runSafe {
5958
val state = world.getBlockState(blockPos)
6059
val voxelShape = state.getOutlineShape(world, blockPos)
6160
val boundingBoxes = voxelShape.boundingBoxes.map { it.offset(blockPos) }
62-
findRotation(rotationConfig, interactionConfig, boundingBoxes, priority, sides) {
61+
findRotation(rotationConfig, interactionConfig, boundingBoxes, sides) {
6362
blockResult?.blockPos == blockPos && (blockResult?.side in sides || sides.isEmpty())
6463
}?.let {
65-
requests.add(it)
64+
context = it
6665
return@runSafe it
6766
}
6867
return@runSafe null

common/src/main/kotlin/com/lambda/event/events/ScreenHandlerEvent.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.lambda.event.events
22

33
import com.lambda.event.Event
4-
import net.minecraft.client.gui.screen.Screen
5-
import net.minecraft.client.gui.screen.ingame.HandledScreen
6-
import net.minecraft.client.gui.screen.ingame.ScreenHandlerProvider
74
import net.minecraft.item.ItemStack
85
import net.minecraft.screen.ScreenHandler
96

107
sealed class ScreenHandlerEvent : Event {
11-
class Open<T : ScreenHandler>(val screen: T) : ScreenHandlerEvent()
12-
class Close<T : ScreenHandler>(val screen: T) : ScreenHandlerEvent()
8+
class Open<H : ScreenHandler>(val screenHandler: H) : ScreenHandlerEvent()
9+
class Close<H : ScreenHandler>(val screenHandler: H) : ScreenHandlerEvent()
1310
data class Loaded(
1411
val revision: Int,
1512
val stacks: List<ItemStack>,

common/src/main/kotlin/com/lambda/graphics/buffer/vao/VAO.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import com.lambda.graphics.gl.VaoUtils.bufferData
1818
import com.lambda.graphics.gl.VaoUtils.unbindIndexBuffer
1919
import com.lambda.graphics.gl.VaoUtils.unbindVertexArray
2020
import com.lambda.graphics.gl.VaoUtils.unbindVertexBuffer
21-
import com.lambda.threading.runOnGameThread
21+
import com.lambda.threading.runGameConcurrent
2222
import com.mojang.blaze3d.systems.RenderSystem.drawElements
2323
import org.lwjgl.opengl.GL30C.*
2424
import java.awt.Color
@@ -48,7 +48,7 @@ class VAO(
4848
val stride = attribGroup.stride
4949
objectSize = stride * drawMode.indicesCount
5050

51-
runOnGameThread {
51+
runGameConcurrent {
5252
vertices = byteBuffer(objectSize * 256 * 4)
5353
verticesPointer = address(vertices)
5454
verticesPosition = verticesPointer

common/src/main/kotlin/com/lambda/interaction/RotationManager.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import com.lambda.interaction.rotation.Rotation.Companion.lerp
1616
import com.lambda.interaction.rotation.RotationContext
1717
import com.lambda.interaction.rotation.RotationMode
1818
import com.lambda.module.modules.client.Baritone
19-
import com.lambda.threading.runOnGameThreadConcurrent
19+
import com.lambda.threading.runGameConcurrent
2020
import com.lambda.threading.runSafe
2121
import com.lambda.util.math.MathUtils.lerp
2222
import com.lambda.util.math.MathUtils.toRadian
@@ -51,7 +51,7 @@ object RotationManager : Loadable {
5151
val packet = event.packet
5252
if (packet !is PlayerPositionLookS2CPacket) return@listener
5353

54-
runOnGameThreadConcurrent {
54+
runGameConcurrent {
5555
reset(Rotation(packet.yaw, packet.pitch))
5656
}
5757
}

common/src/main/kotlin/com/lambda/interaction/material/ContainerManager.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
package com.lambda.interaction.material
22

3-
import com.lambda.context.SafeContext
43
import com.lambda.event.events.InteractionEvent
54
import com.lambda.event.events.ScreenHandlerEvent
65
import com.lambda.event.listener.SafeListener.Companion.listener
76
import com.lambda.interaction.material.StackSelection.Companion.select
87
import com.lambda.interaction.material.container.*
9-
import com.lambda.module.modules.client.TaskFlow
108
import com.lambda.util.Communication.info
119
import com.lambda.util.item.ItemUtils
12-
import com.lambda.util.player.SlotUtils.combined
1310
import com.lambda.util.primitives.extension.containerStacks
1411
import net.minecraft.block.BlockState
1512
import net.minecraft.block.entity.BlockEntity
@@ -41,7 +38,7 @@ object ContainerManager {
4138
}
4239

4340
listener<ScreenHandlerEvent.Close<GenericContainerScreenHandler>> { event ->
44-
val handler = event.screen
41+
val handler = event.screenHandler
4542

4643
when (val block = lastInteractedBlockEntity) {
4744
is EnderChestBlockEntity -> {

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

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.lambda.interaction.material.StackSelection
66
import com.lambda.task.TaskChain
77
import com.lambda.task.buildTask
88
import com.lambda.task.emptyChain
9+
import com.lambda.threading.runGameBlocking
910
import com.lambda.util.player.SlotUtils.hotbar
1011
import net.minecraft.item.ItemStack
1112

@@ -16,16 +17,7 @@ object HotbarContainer : MaterialContainer(Rank.HOTBAR) {
1617

1718
override fun prepare() = emptyChain()
1819

19-
override fun withdraw(selection: StackSelection) = buildTask {
20-
// gameThreadBlocking {
21-
// stacks.filter(selection.selector).forEach { stack ->
22-
// player.inventory.selectedSlot = player.inventory.main.indexOf(stack)
23-
// delay(TaskFlow.itemMoveDelay)
24-
// }
25-
// }
26-
}
20+
override fun withdraw(selection: StackSelection) = emptyChain()
2721

28-
override fun deposit(selection: StackSelection): TaskChain {
29-
TODO("Not yet implemented")
30-
}
22+
override fun deposit(selection: StackSelection) = emptyChain()
3123
}

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

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,4 @@ object InventoryContainer : MaterialContainer(Rank.INVENTORY) {
1515
override fun withdraw(selection: StackSelection) = emptyChain()
1616

1717
override fun deposit(selection: StackSelection) = emptyChain()
18-
19-
// Lambda.LOG.info("Moving $selection from inventory to slot ${destination.slot}")
20-
// stacks.filter(selection.selector).take(selection.count).forEach { stack ->
21-
// player.currentScreenHandler?.let { screenHandler ->
22-
// if (screenHandler.stacks[destination.slot].item == stack.item) {
23-
// return@forEach
24-
// }
25-
// val currentStackSlot = screenHandler.stacks.indexOf(stack)
26-
// if (currentStackSlot == destination.slot) {
27-
// return@forEach
28-
// }
29-
// interaction.clickSlot(
30-
// player.currentScreenHandler?.syncId ?: 0,
31-
// currentStackSlot,
32-
// 0,
33-
// SlotActionType.PICKUP,
34-
// player,
35-
// )
36-
// delay(TaskFlow.itemMoveDelay)
37-
// interaction.clickSlot(
38-
// player.currentScreenHandler?.syncId ?: 0,
39-
// destination.slot,
40-
// 0,
41-
// SlotActionType.PICKUP,
42-
// player,
43-
// )
44-
// delay(TaskFlow.itemMoveDelay)
45-
// }
46-
// }
4718
}

0 commit comments

Comments
 (0)