summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Cáceres <lacaceres97@gmail.com>2017-12-06 16:32:05 +0000
committerSmallJoker <mk939@ymail.com>2018-06-03 17:32:00 +0200
commit6f80e302fd093227dc864aa8c37b643c9e84b55e (patch)
tree0799e2a0f44529b3ab6888133fe58b49b79b2bb4
parent48ebbf0fc642908e26b58fd17f379920dbb1b387 (diff)
downloadminetest-6f80e302fd093227dc864aa8c37b643c9e84b55e.tar.gz
minetest-6f80e302fd093227dc864aa8c37b643c9e84b55e.tar.bz2
minetest-6f80e302fd093227dc864aa8c37b643c9e84b55e.zip
Ensure no item stack is being held before crafting (#4779)
-rw-r--r--src/guiFormSpecMenu.cpp28
1 files changed, 17 insertions, 11 deletions
diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp
index 19fd9f1f0..c4b072be1 100644
--- a/src/guiFormSpecMenu.cpp
+++ b/src/guiFormSpecMenu.cpp
@@ -3681,18 +3681,24 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
a->from_i = m_selected_item->i;
m_invmgr->inventoryAction(a);
} else if (craft_amount > 0) {
- m_selected_content_guess = ItemStack(); // Clear
-
- // Send IACTION_CRAFT
-
assert(s.isValid());
- assert(inv_s);
-
- infostream << "Handing IACTION_CRAFT to manager" << std::endl;
- ICraftAction *a = new ICraftAction();
- a->count = craft_amount;
- a->craft_inv = s.inventoryloc;
- m_invmgr->inventoryAction(a);
+
+ // if there are no items selected or the selected item
+ // belongs to craftresult list, proceed with crafting
+ if (m_selected_item == NULL ||
+ !m_selected_item->isValid() || m_selected_item->listname == "craftresult") {
+
+ m_selected_content_guess = ItemStack(); // Clear
+
+ assert(inv_s);
+
+ // Send IACTION_CRAFT
+ infostream << "Handing IACTION_CRAFT to manager" << std::endl;
+ ICraftAction *a = new ICraftAction();
+ a->count = craft_amount;
+ a->craft_inv = s.inventoryloc;
+ m_invmgr->inventoryAction(a);
+ }
}
// If m_selected_amount has been decreased to zero, deselect