Clean up craft replacements docs

This commit is contained in:
Paul Ouellette 2019-08-08 08:30:38 -04:00 committed by sfan5
parent 103d9c5c53
commit 27ce6d0ecc
3 changed files with 17 additions and 7 deletions

@ -4782,8 +4782,9 @@ Item handling
`{stack1, stack2, stack3, stack4, stack 5, stack 6, stack 7, stack 8, stack 9}` `{stack1, stack2, stack3, stack4, stack 5, stack 6, stack 7, stack 8, stack 9}`
* `output.item` = `ItemStack`, if unsuccessful: empty `ItemStack` * `output.item` = `ItemStack`, if unsuccessful: empty `ItemStack`
* `output.time` = a number, if unsuccessful: `0` * `output.time` = a number, if unsuccessful: `0`
* `output.replacements` = list of `ItemStack`s that couldn't be placed in * `output.replacements` = List of replacement `ItemStack`s that couldn't be
`decremented_input.items` placed in `decremented_input.items`. Replacements can be placed in
`decremented_input` if the stack of the replaced item has a count of 1.
* `decremented_input` = like `input` * `decremented_input` = like `input`
* `minetest.get_craft_recipe(output)`: returns input * `minetest.get_craft_recipe(output)`: returns input
* returns last registered recipe for output item (node) * returns last registered recipe for output item (node)

@ -113,9 +113,6 @@ struct CraftOutput
Example: If ("bucket:bucket_water", "bucket:bucket_empty") is a Example: If ("bucket:bucket_water", "bucket:bucket_empty") is a
replacement pair, the crafting input slot that contained a water replacement pair, the crafting input slot that contained a water
bucket will contain an empty bucket after crafting. bucket will contain an empty bucket after crafting.
Note: replacements only work correctly when stack_max of the item
to be replaced is 1. It is up to the mod writer to ensure this.
*/ */
struct CraftReplacements struct CraftReplacements
{ {
@ -410,10 +407,22 @@ public:
ICraftDefManager() = default; ICraftDefManager() = default;
virtual ~ICraftDefManager() = default; virtual ~ICraftDefManager() = default;
// The main crafting function /**
* The main crafting function.
*
* @param input The input grid.
* @param output CraftOutput where the result is placed.
* @param output_replacements A vector of ItemStacks where replacements are
* placed if they cannot be placed in the input. Replacements can be placed
* in the input if the stack of the replaced item has a count of 1.
* @param decrementInput If true, consume or replace input items.
* @param gamedef
* @return true if a result was found, otherwise false.
*/
virtual bool getCraftResult(CraftInput &input, CraftOutput &output, virtual bool getCraftResult(CraftInput &input, CraftOutput &output,
std::vector<ItemStack> &output_replacements, std::vector<ItemStack> &output_replacements,
bool decrementInput, IGameDef *gamedef) const=0; bool decrementInput, IGameDef *gamedef) const=0;
virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output, virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output,
IGameDef *gamedef, unsigned limit=0) const=0; IGameDef *gamedef, unsigned limit=0) const=0;

@ -861,7 +861,7 @@ void ICraftAction::apply(InventoryManager *mgr,
} }
// Put the replacements in the inventory or drop them on the floor, if // Put the replacements in the inventory or drop them on the floor, if
// the invenotry is full // the inventory is full
for (auto &output_replacement : output_replacements) { for (auto &output_replacement : output_replacements) {
if (list_main) if (list_main)
output_replacement = list_main->addItem(output_replacement); output_replacement = list_main->addItem(output_replacement);