| | function failedCraftFeedback(bot, name, item, craftingTable) { |
| | const recipes = bot.recipesAll(item.id, null, craftingTable); |
| | if (!recipes.length) { |
| | throw new Error(`No crafting table nearby`); |
| | } else { |
| | const recipes = bot.recipesAll( |
| | item.id, |
| | null, |
| | mcData.blocksByName.crafting_table.id |
| | ); |
| | |
| | var min = 999; |
| | var min_recipe = null; |
| | for (const recipe of recipes) { |
| | const delta = recipe.delta; |
| | var missing = 0; |
| | for (const delta_item of delta) { |
| | if (delta_item.count < 0) { |
| | const inventory_item = bot.inventory.findInventoryItem( |
| | mcData.items[delta_item.id].name, |
| | null |
| | ); |
| | if (!inventory_item) { |
| | missing += -delta_item.count; |
| | } else { |
| | missing += Math.max( |
| | -delta_item.count - inventory_item.count, |
| | 0 |
| | ); |
| | } |
| | } |
| | } |
| | if (missing < min) { |
| | min = missing; |
| | min_recipe = recipe; |
| | } |
| | } |
| | const delta = min_recipe.delta; |
| | let message = ""; |
| | for (const delta_item of delta) { |
| | if (delta_item.count < 0) { |
| | const inventory_item = bot.inventory.findInventoryItem( |
| | mcData.items[delta_item.id].name, |
| | null |
| | ); |
| | if (!inventory_item) { |
| | message += ` ${-delta_item.count} more ${ |
| | mcData.items[delta_item.id].name |
| | }, `; |
| | } else { |
| | if (inventory_item.count < -delta_item.count) { |
| | message += `${ |
| | -delta_item.count - inventory_item.count |
| | } more ${mcData.items[delta_item.id].name}`; |
| | } |
| | } |
| | } |
| | } |
| | bot.chat(`I cannot make ${name} because I need: ${message}`); |
| | } |
| | } |
| |
|