summaryrefslogtreecommitdiff
path: root/src/inventorymanager.cpp
diff options
context:
space:
mode:
authorNovatux <nathanael.courant@laposte.net>2013-10-26 11:25:28 +0200
committerNovatux <nathanael.courant@laposte.net>2013-11-01 15:55:34 +0100
commitbd6d4666abe20247437ede28f73955d413fe5e22 (patch)
treec67cd847a18096a5889f00f8a4e613209bd6382e /src/inventorymanager.cpp
parent2f10cfb226c6de8024f5efa9bf14ea22b5b90ce2 (diff)
downloadminetest-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.cpp8
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 "