@@ -23,7 +23,10 @@ import com.lambda.context.Automated
2323import com.lambda.context.SafeContext
2424import com.lambda.event.events.TickEvent
2525import com.lambda.event.listener.SafeListener.Companion.listen
26+ import com.lambda.interaction.managers.hotbar.HotbarRequest
2627import 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
2730import com.lambda.interaction.material.container.containers.MainHandContainer
2831import com.lambda.task.Task
2932import 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