Node timers are higher precision and a better guarantee
of happening at regular intervals, whereas ABM's may be
postponed, cancelled or missed if a player is too far.
The largest benefit is that once the furnace is done
cooking, no more ABM's are fired - the timer is stopped
instead and no more events are created until items
are put in the furnace.
This patch is larger due to the migration of the timer
function and indentation change as a result of the somewhat
reduced complexity. I've tested with several furnaces and
this works correctly and behavior is not affected, although
people may find that their furnaces now work more
regularly.
If you place several furnaces next to eachother, you will
still find all furnace timers firing exactly at the same
time. This is a bug in core that should not coalesce node
timers at second intervals.
* Move furnace related code into furnace.lua
* Move duplicated code into functions
* Rewrite ABM:
* Easier to follow strcuture (no returns in the middle)
* No unnecessary calls to get_craft_result
* Split logic and "visual feedback" (a bit)
* Fewer calls to meta:set and meta:get
* Better feedback on the current state of the furnace