Improved furnaces

* Fixed progress bar on 1.8
* Fixed bugs
* Improved code
* Fixes #1068
* Fixes #1070
You can direct use ``m_TimeCooked = std::max(m_TimeCooked - 2, 0);``.