Skip to content

Commit 7a10323

Browse files
committed
Refactor rotation management and add Ender Chest access config.
Replaced `requestRotation` with a more flexible `rotate` DSL across modules for cleaner code and enhanced rotation handling. Introduced a new `accessEnderChest` configuration in `InventoryConfig` and applied it to filter container usage. Improved `PacketMine` behavior for better break handling.
1 parent 573b69c commit 7a10323

File tree

11 files changed

+82
-51
lines changed

11 files changed

+82
-51
lines changed

common/src/main/java/com/lambda/mixin/MinecraftClientMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private void onScreenOpen(@Nullable Screen screen, CallbackInfo ci) {
8686
private void onScreenRemove(@Nullable Screen screen, CallbackInfo ci) {
8787
if (currentScreen == null) return;
8888
if (currentScreen instanceof ScreenHandlerProvider<?> handledScreen) {
89-
EventFlow.post(new ScreenHandlerEvent.Close(handledScreen.getScreenHandler()));
89+
EventFlow.post(new InventoryEvent.Close(handledScreen.getScreenHandler()));
9090
}
9191
}
9292

common/src/main/kotlin/com/lambda/config/groups/InventoryConfig.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import net.minecraft.block.Block
2323

2424
interface InventoryConfig {
2525
val disposables: Set<Block>
26+
val accessEnderChest: Boolean
2627

2728
val actionTimout: Int
2829
val swapWithDisposables: Boolean

common/src/main/kotlin/com/lambda/config/groups/InventorySettings.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class InventorySettings(
2525
vis: () -> Boolean = { true },
2626
) : InventoryConfig {
2727
override val disposables by c.setting("Disposables", ItemUtils.defaultDisposables, "Items that will be ignored when checking for a free slot", vis)
28+
override val accessEnderChest by c.setting("Access Ender Chest", false, "Allow access to the player's ender chest", vis)
2829
override val actionTimout by c.setting("Action Timeout", 10, 0..100, 1, "How long to wait for after each inventory action", " ticks", vis)
2930
override val swapWithDisposables by c.setting("Swap With Disposables", true, "Swap items with disposable ones", vis)
3031
override val providerPriority by c.setting("Provider Priority", InventoryConfig.Priority.WITH_MIN_ITEMS, "What container to prefer when retrieving the item from", vis)

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

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ import com.lambda.config.groups.RotationSettings
2222
import com.lambda.context.SafeContext
2323
import com.lambda.core.Loadable
2424
import com.lambda.event.EventFlow.post
25-
import com.lambda.event.events.*
25+
import com.lambda.event.events.ConnectionEvent
26+
import com.lambda.event.events.PacketEvent
27+
import com.lambda.event.events.RotationEvent
2628
import com.lambda.event.listener.SafeListener.Companion.listen
2729
import com.lambda.event.listener.UnsafeListener.Companion.listenUnsafe
2830
import com.lambda.interaction.rotation.Rotation
@@ -34,14 +36,17 @@ import com.lambda.interaction.rotation.RotationMode
3436
import com.lambda.module.modules.client.Baritone
3537
import com.lambda.threading.runGameScheduled
3638
import com.lambda.threading.runSafe
37-
import com.lambda.util.math.lerp
38-
import com.lambda.util.math.MathUtils.toRadian
39-
import com.lambda.util.math.Vec2d
4039
import com.lambda.util.extension.partialTicks
4140
import com.lambda.util.extension.rotation
41+
import com.lambda.util.math.MathUtils.toRadian
42+
import com.lambda.util.math.Vec2d
43+
import com.lambda.util.math.lerp
4244
import net.minecraft.client.input.Input
4345
import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket
44-
import kotlin.math.*
46+
import kotlin.math.cos
47+
import kotlin.math.round
48+
import kotlin.math.sign
49+
import kotlin.math.sin
4550

4651
object RotationManager : Loadable {
4752
var currentRotation = Rotation.ZERO
@@ -54,16 +59,17 @@ object RotationManager : Loadable {
5459

5560
override fun load() = "Loaded Rotation Manager"
5661

57-
fun Any.requestRotation(
62+
@RotationDsl
63+
fun Any.rotate(
5864
priority: Int = 0,
5965
alwaysListen: Boolean = false,
60-
onUpdate: SafeContext.(lastContext: RotationContext?) -> RotationContext?,
61-
onReceive: SafeContext.(context: RotationContext) -> Unit = {}
66+
block: RequestRotationBuilder.() -> Unit,
6267
) {
68+
val builder = RequestRotationBuilder().apply(block)
6369
var lastCtx: RotationContext? = null
6470

6571
listen<RotationEvent.Update>(priority, alwaysListen) { event ->
66-
val rotationContext = onUpdate(event.context)
72+
val rotationContext = builder.onUpdate?.invoke(this, event.context)
6773

6874
rotationContext?.let {
6975
event.context = it
@@ -74,11 +80,29 @@ object RotationManager : Loadable {
7480

7581
listen<RotationEvent.Post> { event ->
7682
if (event.context == lastCtx) {
77-
onReceive(event.context)
83+
builder.onReceive?.invoke(this, event.context)
7884
}
7985
}
8086
}
8187

88+
@DslMarker
89+
annotation class RotationDsl
90+
91+
class RequestRotationBuilder {
92+
var onUpdate: (SafeContext.(lastContext: RotationContext?) -> RotationContext?)? = null
93+
var onReceive: (SafeContext.(context: RotationContext) -> Unit)? = null
94+
95+
@RotationDsl
96+
fun onUpdate(block: SafeContext.(lastContext: RotationContext?) -> RotationContext?) {
97+
onUpdate = block
98+
}
99+
100+
@RotationDsl
101+
fun onReceive(block: SafeContext.(context: RotationContext) -> Unit) {
102+
onReceive = block
103+
}
104+
}
105+
82106
@JvmStatic
83107
fun update() = runSafe {
84108
RotationEvent.Update(BaritoneProcessor.poolContext()).post {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ import net.minecraft.screen.ScreenHandlerType
4343
// ToDo: Make this a Configurable to save container caches. Should use a cached region based storage system.
4444
object ContainerManager : Loadable {
4545
private val container: List<MaterialContainer>
46-
get() = compileContainers + runtimeContainers
46+
// ToDo: Filter containers based on a filter setting TaskFlowModule.inventory.accessEnderChest etc
47+
get() = compileContainers.filter { it !is EnderChestContainer } + runtimeContainers
4748

4849
private val compileContainers =
4950
getInstances<MaterialContainer> { forPackages("com.lambda.interaction.material.container") }

common/src/main/kotlin/com/lambda/module/modules/combat/KillAura.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ import com.lambda.event.events.PlayerPacketEvent
2626
import com.lambda.event.events.TickEvent
2727
import com.lambda.event.listener.SafeListener.Companion.listen
2828
import com.lambda.interaction.RotationManager
29-
import com.lambda.interaction.RotationManager.requestRotation
29+
import com.lambda.interaction.RotationManager.rotate
3030
import com.lambda.interaction.rotation.Rotation
3131
import com.lambda.interaction.rotation.Rotation.Companion.dist
3232
import com.lambda.interaction.rotation.Rotation.Companion.rotationTo
3333
import com.lambda.interaction.rotation.RotationContext
34-
import com.lambda.interaction.visibilty.VisibilityChecker.getVisibleSurfaces
3534
import com.lambda.interaction.visibilty.VisibilityChecker.scanSurfaces
3635
import com.lambda.interaction.visibilty.VisibilityChecker.visibleSides
3736
import com.lambda.module.Module
@@ -55,7 +54,6 @@ import net.minecraft.network.packet.c2s.play.HandSwingC2SPacket
5554
import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket
5655
import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket
5756
import net.minecraft.util.Hand
58-
import net.minecraft.util.math.Direction
5957
import net.minecraft.util.math.Vec3d
6058
import kotlin.math.pow
6159

@@ -116,15 +114,15 @@ object KillAura : Module(
116114
}
117115

118116
init {
119-
requestRotation(
120-
onUpdate = {
121-
if (!rotate) return@requestRotation null
117+
rotate {
118+
onUpdate {
119+
if (!rotate) return@onUpdate null
122120

123121
target?.let { target ->
124122
buildRotation(target)
125123
}
126124
}
127-
)
125+
}
128126

129127
listen<PlayerPacketEvent.Pre>(Int.MIN_VALUE) { event ->
130128
prevY = lastY

common/src/main/kotlin/com/lambda/module/modules/movement/Speed.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import com.lambda.context.SafeContext
2222
import com.lambda.event.events.ClientEvent
2323
import com.lambda.event.events.MovementEvent
2424
import com.lambda.event.listener.SafeListener.Companion.listen
25-
import com.lambda.interaction.RotationManager.requestRotation
25+
import com.lambda.interaction.RotationManager.rotate
2626
import com.lambda.interaction.rotation.Rotation
2727
import com.lambda.interaction.rotation.RotationContext
2828
import com.lambda.interaction.rotation.RotationMode
@@ -134,15 +134,15 @@ object Speed : Module(
134134
}
135135
}
136136

137-
requestRotation(100, alwaysListen = false,
138-
onUpdate = { lastContext ->
139-
if (mode != Mode.GRIM_STRAFE) return@requestRotation null
140-
if (!shouldWork()) return@requestRotation null
137+
rotate(100, alwaysListen = false) {
138+
onUpdate { lastContext ->
139+
if (mode != Mode.GRIM_STRAFE) return@onUpdate null
140+
if (!shouldWork()) return@onUpdate null
141141

142142
var yaw = player.yaw
143143
val input = newMovementInput()
144144

145-
if (!input.isInputting) return@requestRotation null
145+
if (!input.isInputting) return@onUpdate null
146146

147147
run {
148148
if (!diagonal) return@run
@@ -161,8 +161,8 @@ object Speed : Module(
161161
val rotation = Rotation(moveYaw, lastContext?.rotation?.pitch ?: player.pitch.toDouble())
162162

163163
RotationContext(rotation, rotationConfig)
164-
}, {}
165-
)
164+
}
165+
}
166166

167167
onEnable {
168168
reset()

common/src/main/kotlin/com/lambda/module/modules/player/PacketMine.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,10 +1382,12 @@ object PacketMine : Module(
13821382
}
13831383

13841384
private fun SafeContext.packetStartBreak(pos: BlockPos) {
1385-
startBreak(pos)
1386-
if (packets != PacketMode.Vanilla || doubleBreak) {
1385+
if (packets == PacketMode.Grim) {
13871386
abortBreak(pos)
1387+
stopBreak(pos)
13881388
}
1389+
startBreak(pos)
1390+
if (packets == PacketMode.NCP) abortBreak(pos)
13891391
if (packets == PacketMode.Grim || doubleBreak) {
13901392
stopBreak(pos)
13911393
}

common/src/main/kotlin/com/lambda/module/modules/player/Scaffold.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import com.lambda.graphics.renderer.esp.DirectionMask
2626
import com.lambda.graphics.renderer.esp.DirectionMask.buildSideMesh
2727
import com.lambda.graphics.renderer.esp.builders.build
2828
import com.lambda.interaction.RotationManager.currentRotation
29-
import com.lambda.interaction.RotationManager.requestRotation
29+
import com.lambda.interaction.RotationManager.rotate
3030
import com.lambda.interaction.blockplace.PlaceFinder.Companion.buildPlaceInfo
3131
import com.lambda.interaction.blockplace.PlaceInfo
3232
import com.lambda.interaction.blockplace.PlaceInteraction.placeBlock
@@ -121,15 +121,15 @@ object Scaffold : Module(
121121
}
122122

123123
init {
124-
requestRotation(
125-
onUpdate = {
124+
rotate {
125+
onUpdate {
126126
lastRotation = null
127-
val info = updatePlaceInfo() ?: return@requestRotation null
128-
val rotation = rotate(info) ?: return@requestRotation null
127+
val info = updatePlaceInfo() ?: return@onUpdate null
128+
val rotation = rotate(info) ?: return@onUpdate null
129129

130130
RotationContext(rotation, rotationConfig)
131131
}
132-
)
132+
}
133133

134134
listen<MovementEvent.Sneak> {
135135
if (sneakTicks > 0) it.sneak = true

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

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,10 @@ import baritone.api.pathing.goals.GoalBlock
2121
import com.lambda.config.groups.RotationConfig
2222
import com.lambda.config.groups.InteractionConfig
2323
import com.lambda.context.SafeContext
24-
import com.lambda.event.events.RotationEvent
2524
import com.lambda.event.events.TickEvent
2625
import com.lambda.event.events.WorldEvent
2726
import com.lambda.event.listener.SafeListener.Companion.listen
28-
import com.lambda.interaction.RotationManager.requestRotation
27+
import com.lambda.interaction.RotationManager.rotate
2928
import com.lambda.interaction.construction.context.BreakContext
3029
import com.lambda.interaction.visibilty.VisibilityChecker.lookAtBlock
3130
import com.lambda.module.modules.client.TaskFlowModule
@@ -81,17 +80,17 @@ class BreakBlock @Ta5kBuilder constructor(
8180
}
8281

8382
init {
84-
requestRotation(
85-
onUpdate = {
86-
if (state != State.BREAKING) return@requestRotation null
87-
if (!rotate || ctx.instantBreak) return@requestRotation null
83+
rotate {
84+
onUpdate {
85+
if (state != State.BREAKING) return@onUpdate null
86+
if (!rotate || ctx.instantBreak) return@onUpdate null
8887

8988
lookAtBlock(blockPos, rotation, interact, sides)
90-
},
91-
onReceive = { context ->
89+
}
90+
onReceive { context ->
9291
isValid = context.isValid
9392
}
94-
)
93+
}
9594

9695
listen<TickEvent.Pre> {
9796
drop?.let { itemDrop ->

0 commit comments

Comments
 (0)