diff --git a/MinecraftClient/ChatBot.cs b/MinecraftClient/ChatBot.cs index 48ce77c0..fbb35bf2 100644 --- a/MinecraftClient/ChatBot.cs +++ b/MinecraftClient/ChatBot.cs @@ -868,5 +868,10 @@ namespace MinecraftClient { return Handler.ChangeSlot(slot); } + + protected byte GetCurrentSlot() + { + return Handler.GetCurrentSlot(); + } } } diff --git a/MinecraftClient/ChatBots/AutoEat.cs b/MinecraftClient/ChatBots/AutoEat.cs index 8c7c58f5..146f819c 100644 --- a/MinecraftClient/ChatBots/AutoEat.cs +++ b/MinecraftClient/ChatBots/AutoEat.cs @@ -9,7 +9,6 @@ namespace MinecraftClient.ChatBots class AutoEat : ChatBot { byte LastSlot = 0; - byte CurrentSlot; public static bool Eating = false; private int HungerThreshold = 6; @@ -20,15 +19,11 @@ namespace MinecraftClient.ChatBots public override void OnHealthUpdate(float health, int food) { - if (food <= HungerThreshold || (food < 20 && health < 20)) + if ((food <= HungerThreshold) || (food < 20 && health < 20) || (food < 20 && Eating)) { - Eating = true; - FindFoodAndEat(); - } - // keep eating until full - if (food < 20 && Eating) - { - FindFoodAndEat(); + Eating = FindFoodAndEat(); + if (!Eating) + ChangeSlot(LastSlot); } if (food >= 20 && Eating) { @@ -37,10 +32,6 @@ namespace MinecraftClient.ChatBots } } - public override void OnHeldItemChange(byte slot) - { - CurrentSlot = slot; - } /// /// Try to find food in the hotbar and eat it /// @@ -49,7 +40,11 @@ namespace MinecraftClient.ChatBots { Container inventory = GetPlayerInventory(); bool found = false; - LastSlot = CurrentSlot; + byte CurrentSlot = GetCurrentSlot(); + if (!Eating) + { + LastSlot = CurrentSlot; + } if (inventory.Items.ContainsKey(CurrentSlot + 36) && inventory.Items[CurrentSlot + 36].Type.IsFood()) { // no need to change slot