Skip to content

Commit 2c5a428

Browse files
committed
EatTask swapping rework
1 parent 4d51870 commit 2c5a428

1 file changed

Lines changed: 26 additions & 12 deletions

File tree

src/main/kotlin/com/lambda/task/tasks/EatTask.kt

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ import com.lambda.context.Automated
2323
import com.lambda.context.SafeContext
2424
import com.lambda.event.events.TickEvent
2525
import com.lambda.event.listener.SafeListener.Companion.listen
26+
import com.lambda.interaction.managers.hotbar.HotbarRequest
2627
import com.lambda.interaction.material.container.ContainerManager.transfer
28+
import com.lambda.interaction.material.container.containers.HotbarContainer
29+
import com.lambda.interaction.material.container.containers.InventoryContainer
2730
import com.lambda.interaction.material.container.containers.MainHandContainer
2831
import com.lambda.task.Task
2932
import com.lambda.threading.runSafeAutomated
@@ -46,7 +49,7 @@ class EatTask @Ta5kBuilder constructor(
4649
}
4750

4851
init {
49-
listen<TickEvent.Input.Pre> {
52+
listen<TickEvent.Input.Post> {
5053
if (holdingUse && !reason.shouldKeepEating(eatStack)) {
5154
mc.options.useKey.isPressed = false
5255
holdingUse = false
@@ -55,25 +58,36 @@ class EatTask @Ta5kBuilder constructor(
5558
return@listen
5659
}
5760

58-
if (player.isUsingItem) {
59-
if (!holdingUse) {
60-
mc.options.useKey.isPressed = true
61-
holdingUse = true
62-
}
63-
return@listen
64-
}
65-
6661
val foodFinder = reason.selector()
67-
if (!foodFinder.matches(player.mainHandStack)) {
62+
val hotbarSlot = foodFinder.filterSlots(HotbarContainer.slots).firstOrNull()
63+
if (hotbarSlot != null) {
64+
val request = HotbarRequest(
65+
hotbarSlot.index,
66+
this@EatTask,
67+
keepTicks = hotbarConfig.keepTicks.coerceAtLeast(1),
68+
nowOrNothing = false
69+
).submit()
70+
if (!request.done) return@listen
71+
} else {
72+
val inventorySlot = foodFinder.filterSlots(InventoryContainer.slots).firstOrNull()
73+
if (inventorySlot != null) runSafeAutomated {
74+
InventoryContainer.transfer(foodFinder, HotbarContainer)
75+
}
6876
if (holdingUse) {
6977
mc.options.useKey.isPressed = false
7078
holdingUse = false
7179
}
72-
runSafeAutomated {
73-
foodFinder.transfer(MainHandContainer)
80+
return@listen
81+
}
82+
83+
if (player.isUsingItem) {
84+
if (!holdingUse) {
85+
mc.options.useKey.isPressed = true
86+
holdingUse = true
7487
}
7588
return@listen
7689
}
90+
7791
eatStack = player.mainHandStack
7892

7993
(interaction.interactItem(player, Hand.MAIN_HAND) as? ActionResult.Success)?.let {

0 commit comments

Comments
 (0)