fix(eater): 🥅 catch async error on full food
Attempt to fix async error returned by `bot.consume`.
Fixed by wrapping in a `try{}` block and using `.catch`.
Still don't know why or how this works 🤷.
This commit is contained in:
parent
1e82045221
commit
1597acca72
|
@ -2,11 +2,7 @@ let cfg = {}
|
|||
let bot = {}
|
||||
let isEating = false
|
||||
|
||||
function callbackHandle(err) {
|
||||
if (err) console.error(err)
|
||||
}
|
||||
|
||||
function eat(callback) {
|
||||
function eat(callback = e => e && console.error(e)) {
|
||||
isEating = true
|
||||
|
||||
const foodNames = require('minecraft-data')(bot.version).foodsArray.map((item) => item.name)
|
||||
|
@ -37,23 +33,23 @@ function eat(callback) {
|
|||
|
||||
bot.equip(best_food, 'hand', function (error) {
|
||||
if (error) {
|
||||
console.error(error)
|
||||
console.warn(error, best_food)
|
||||
isEating = false
|
||||
bot.emit('eat_stop')
|
||||
} else {
|
||||
bot.consume(function (err) {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
isEating = false
|
||||
bot.emit('eat_stop')
|
||||
return callback(err)
|
||||
try {
|
||||
bot.consume().catch(error => {
|
||||
if (error.message === "Food is full") {
|
||||
console.warn(error, best_food)
|
||||
} else {
|
||||
isEating = false
|
||||
bot.emit('eat_stop')
|
||||
callback(null)
|
||||
if (!bot.food === 20) eat(callbackHandle)
|
||||
return callback({ error, best_food })
|
||||
}
|
||||
}).finally(() => {
|
||||
isEating = false
|
||||
bot.emit('eat_stop')
|
||||
})
|
||||
} catch { }
|
||||
if (bot.food !== 20) eat(callback)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -76,7 +72,7 @@ function checkFood() {
|
|||
// TODO implement better idle state
|
||||
) || true // idle most likely
|
||||
) {
|
||||
eat(callbackHandle)
|
||||
eat()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user