Improve AutoEat

This commit is contained in:
ReinforceZwei 2020-04-11 13:28:17 +08:00 committed by ORelio
parent 959b62f35f
commit e9d91ce572
2 changed files with 14 additions and 14 deletions

View file

@ -868,5 +868,10 @@ namespace MinecraftClient
{ {
return Handler.ChangeSlot(slot); return Handler.ChangeSlot(slot);
} }
protected byte GetCurrentSlot()
{
return Handler.GetCurrentSlot();
}
} }
} }

View file

@ -9,7 +9,6 @@ namespace MinecraftClient.ChatBots
class AutoEat : ChatBot class AutoEat : ChatBot
{ {
byte LastSlot = 0; byte LastSlot = 0;
byte CurrentSlot;
public static bool Eating = false; public static bool Eating = false;
private int HungerThreshold = 6; private int HungerThreshold = 6;
@ -20,15 +19,11 @@ namespace MinecraftClient.ChatBots
public override void OnHealthUpdate(float health, int food) 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; Eating = FindFoodAndEat();
FindFoodAndEat(); if (!Eating)
} ChangeSlot(LastSlot);
// keep eating until full
if (food < 20 && Eating)
{
FindFoodAndEat();
} }
if (food >= 20 && Eating) if (food >= 20 && Eating)
{ {
@ -37,10 +32,6 @@ namespace MinecraftClient.ChatBots
} }
} }
public override void OnHeldItemChange(byte slot)
{
CurrentSlot = slot;
}
/// <summary> /// <summary>
/// Try to find food in the hotbar and eat it /// Try to find food in the hotbar and eat it
/// </summary> /// </summary>
@ -49,7 +40,11 @@ namespace MinecraftClient.ChatBots
{ {
Container inventory = GetPlayerInventory(); Container inventory = GetPlayerInventory();
bool found = false; bool found = false;
byte CurrentSlot = GetCurrentSlot();
if (!Eating)
{
LastSlot = CurrentSlot; LastSlot = CurrentSlot;
}
if (inventory.Items.ContainsKey(CurrentSlot + 36) && inventory.Items[CurrentSlot + 36].Type.IsFood()) if (inventory.Items.ContainsKey(CurrentSlot + 36) && inventory.Items[CurrentSlot + 36].Type.IsFood())
{ {
// no need to change slot // no need to change slot