|
|
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}`); |
|
|
} |
|
|
} |
|
|
|