diff --git a/src/content_nodemeta.cpp b/src/content_nodemeta.cpp index 701812219..1552c8e15 100644 --- a/src/content_nodemeta.cpp +++ b/src/content_nodemeta.cpp @@ -245,7 +245,7 @@ bool FurnaceNodeMetadata::step(float dtime) InventoryList *src_list = m_inventory->getList("src"); assert(src_list); - const InventoryItem *src_item = src_list->getItem(0); + InventoryItem *src_item = src_list->getItem(0); bool room_available = false; @@ -289,6 +289,11 @@ bool FurnaceNodeMetadata::step(float dtime) continue; } + /* + Get the source again in case it has all burned + */ + src_item = src_list->getItem(0); + /* If there is no source item, or the source item is not cookable, or the furnace is still cooking, or the furnace became overloaded, stop loop.