hopefully fixed old furnaces taking ridiculous amounts of cpu and halting the server
authorPerttu Ahola <celeron55@gmail.com>
Thu, 16 Jun 2011 16:43:28 +0000 (19:43 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Thu, 16 Jun 2011 16:43:28 +0000 (19:43 +0300)
src/nodemetadata.cpp

index f9468e4fa14f2a3dcc21f08788fdb734b2d24712..6822173cb39771b65ee5685c4c1f6353c03e8d02 100644 (file)
@@ -299,7 +299,11 @@ bool FurnaceNodeMetadata::step(float dtime)
                        m_src_time = 0;
                        m_src_totaltime = 0;
                }
-
+               
+               /*
+                       If fuel is burning, increment the burn counters.
+                       If item finishes cooking, move it to result.
+               */
                if(m_fuel_time < m_fuel_totaltime)
                {
                        //dstream<<"Furnace is active"<<std::endl;
@@ -318,9 +322,13 @@ bool FurnaceNodeMetadata::step(float dtime)
                        continue;
                }
                
+               /*
+                       If there is no source item or source item is not cookable, stop loop.
+               */
                if(src_item == NULL || m_src_totaltime < 0.001)
                {
-                       continue;
+                       m_step_accumulator = 0;
+                       break;
                }
                
                //dstream<<"Furnace is out of fuel"<<std::endl;
@@ -360,6 +368,9 @@ bool FurnaceNodeMetadata::step(float dtime)
                else
                {
                        //dstream<<"No fuel found"<<std::endl;
+                       // No fuel, stop loop.
+                       m_step_accumulator = 0;
+                       break;
                }
        }
        return changed;