diff options
author | Novatux <nathanael.courant@laposte.net> | 2013-10-26 11:25:28 +0200 |
---|---|---|
committer | Novatux <nathanael.courant@laposte.net> | 2013-11-01 15:55:34 +0100 |
commit | bd6d4666abe20247437ede28f73955d413fe5e22 (patch) | |
tree | c67cd847a18096a5889f00f8a4e613209bd6382e /src/inventorymanager.cpp | |
parent | 2f10cfb226c6de8024f5efa9bf14ea22b5b90ce2 (diff) | |
download | minetest-bd6d4666abe20247437ede28f73955d413fe5e22.tar.gz minetest-bd6d4666abe20247437ede28f73955d413fe5e22.tar.bz2 minetest-bd6d4666abe20247437ede28f73955d413fe5e22.zip |
Add a callback: minetest.register_on_craft(itemstack, player,
old_craft_grid, craft_inv) and
minetest.register_craft_predict(itemstack, player, old_craft_grid,
craft_inv)
Diffstat (limited to 'src/inventorymanager.cpp')
-rw-r--r-- | src/inventorymanager.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/inventorymanager.cpp b/src/inventorymanager.cpp index c81f7a19e..1c511e9cb 100644 --- a/src/inventorymanager.cpp +++ b/src/inventorymanager.cpp @@ -724,13 +724,19 @@ void ICraftAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGam } ItemStack crafted; + ItemStack craftresultitem; int count_remaining = count; bool found = getCraftingResult(inv_craft, crafted, false, gamedef); + PLAYER_TO_SA(player)->item_CraftPredict(crafted, player, list_craft, craft_inv); + found = !crafted.empty(); while(found && list_craftresult->itemFits(0, crafted)) { + InventoryList saved_craft_list = *list_craft; + // Decrement input and add crafting output getCraftingResult(inv_craft, crafted, true, gamedef); + PLAYER_TO_SA(player)->item_OnCraft(crafted, player, &saved_craft_list, craft_inv); list_craftresult->addItem(0, crafted); mgr->setInventoryModified(craft_inv); @@ -747,6 +753,8 @@ void ICraftAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGam // Get next crafting result found = getCraftingResult(inv_craft, crafted, false, gamedef); + PLAYER_TO_SA(player)->item_CraftPredict(crafted, player, list_craft, craft_inv); + found = !crafted.empty(); } infostream<<"ICraftAction::apply(): crafted " |