Fixed/extended/modified ban stuff to be good for inclusion
[oweals/minetest.git] / src / content_nodemeta.cpp
index 8627e18d089ebebae0b3aecb6e463dcd548be84b..433e6d04b23e372138eaee5f33d945fd295d00b9 100644 (file)
@@ -109,6 +109,13 @@ bool ChestNodeMetadata::nodeRemovalDisabled()
                return false;
        return true;
 }
+std::string ChestNodeMetadata::getInventoryDrawSpecString()
+{
+       return
+               "invsize[8,9;]"
+               "list[current_name;0;0,0;8,4;]"
+               "list[current_player;main;0,5;8,4;]";
+}
 
 /*
        FurnaceNodeMetadata
@@ -171,9 +178,9 @@ std::string FurnaceNodeMetadata::infoText()
        //return "Furnace";
        if(m_fuel_time >= m_fuel_totaltime)
        {
-               InventoryList *src_list = m_inventory->getList("src");
+               const InventoryList *src_list = m_inventory->getList("src");
                assert(src_list);
-               InventoryItem *src_item = src_list->getItem(0);
+               const InventoryItem *src_item = src_list->getItem(0);
 
                if(src_item)
                        return "Furnace is out of fuel";
@@ -212,7 +219,7 @@ bool FurnaceNodeMetadata::step(float dtime)
 
                InventoryList *src_list = m_inventory->getList("src");
                assert(src_list);
-               InventoryItem *src_item = src_list->getItem(0);
+               const InventoryItem *src_item = src_list->getItem(0);
                
                // Start only if there are free slots in dst, so that it can
                // accomodate any result item
@@ -261,7 +268,7 @@ bool FurnaceNodeMetadata::step(float dtime)
 
                InventoryList *fuel_list = m_inventory->getList("fuel");
                assert(fuel_list);
-               InventoryItem *fuel_item = fuel_list->getItem(0);
+               const InventoryItem *fuel_item = fuel_list->getItem(0);
 
                if(ItemSpec(ITEM_MATERIAL, CONTENT_TREE).checkItem(fuel_item))
                {
@@ -270,6 +277,20 @@ bool FurnaceNodeMetadata::step(float dtime)
                        fuel_list->decrementMaterials(1);
                        changed = true;
                }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLETREE).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_FENCE).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30/2;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
                else if(ItemSpec(ITEM_MATERIAL, CONTENT_WOOD).checkItem(fuel_item))
                {
                        m_fuel_totaltime = 30/4;
@@ -277,6 +298,41 @@ bool FurnaceNodeMetadata::step(float dtime)
                        fuel_list->decrementMaterials(1);
                        changed = true;
                }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_BOOKSHELF).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30/4;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_LEAVES).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30/16;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30/32;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLEGRASS).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30/32;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
+               else if(ItemSpec(ITEM_MATERIAL, CONTENT_CACTUS).checkItem(fuel_item))
+               {
+                       m_fuel_totaltime = 30/4;
+                       m_fuel_time = 0;
+                       fuel_list->decrementMaterials(1);
+                       changed = true;
+               }
                else if(ItemSpec(ITEM_CRAFT, "Stick").checkItem(fuel_item))
                {
                        m_fuel_totaltime = 30/4/4;
@@ -301,5 +357,14 @@ bool FurnaceNodeMetadata::step(float dtime)
        }
        return changed;
 }
+std::string FurnaceNodeMetadata::getInventoryDrawSpecString()
+{
+       return
+               "invsize[8,9;]"
+               "list[current_name;fuel;2,3;1,1;]"
+               "list[current_name;src;2,1;1,1;]"
+               "list[current_name;dst;5,1;2,2;]"
+               "list[current_player;main;0,5;8,4;]";
+}