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 🤷.
master
jay 3 years ago
parent 1e82045221
commit 1597acca72
  1. 32
      lib/plugins/eater.js

@ -2,11 +2,7 @@ let cfg = {}
let bot = {} let bot = {}
let isEating = false let isEating = false
function callbackHandle(err) { function eat(callback = e => e && console.error(e)) {
if (err) console.error(err)
}
function eat(callback) {
isEating = true isEating = true
const foodNames = require('minecraft-data')(bot.version).foodsArray.map((item) => item.name) 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) { bot.equip(best_food, 'hand', function (error) {
if (error) { if (error) {
console.error(error) console.warn(error, best_food)
isEating = false isEating = false
bot.emit('eat_stop') bot.emit('eat_stop')
} else { } else {
bot.consume(function (err) { try {
if (err) { bot.consume().catch(error => {
console.error(err) if (error.message === "Food is full") {
isEating = false console.warn(error, best_food)
bot.emit('eat_stop') } else {
return callback(err) return callback({ error, best_food })
} else { }
}).finally(() => {
isEating = false isEating = false
bot.emit('eat_stop') bot.emit('eat_stop')
callback(null) })
if (!bot.food === 20) eat(callbackHandle) } catch { }
} if (bot.food !== 20) eat(callback)
})
} }
}) })
} }
@ -76,7 +72,7 @@ function checkFood() {
// TODO implement better idle state // TODO implement better idle state
) || true // idle most likely ) || true // idle most likely
) { ) {
eat(callbackHandle) eat()
} }
} }
} }

Loading…
Cancel
Save