TNT: Move timer start to on_create() for burning nodes.
authorAuke Kok <sofar@foo-projects.org>
Tue, 29 Mar 2016 14:39:46 +0000 (07:39 -0700)
committerparamat <mat.gregory@virginmedia.com>
Sat, 16 Apr 2016 18:27:16 +0000 (19:27 +0100)
We add on_create() handlers for both burning TNT and burning
gunpowder. Because gunpowder will explode TNT in 1 second,
and not 4, we need to modify the 4 second timer after we
make the TNT burning. Other mods can now place burning TNT
that will by default explode after 4 seconds.

mods/tnt/init.lua

index c447c715151ee745e03c50ff4b88406e46e8760f..bb1f144b68c075fe9de1bc6e59eebffba27f8c37 100644 (file)
@@ -198,9 +198,7 @@ function tnt.burn(pos)
                minetest.set_node(pos, {name = name .. "_burning"})
                minetest.get_node_timer(pos):start(1)
        elseif name == "tnt:gunpowder" then
-               minetest.sound_play("tnt_gunpowder_burning", {pos = pos, gain = 2})
                minetest.set_node(pos, {name = "tnt:gunpowder_burning"})
-               minetest.get_node_timer(pos):start(1)
        end
 end
 
@@ -378,6 +376,10 @@ minetest.register_node("tnt:gunpowder_burning", {
        end,
        -- unaffected by explosions
        on_blast = function() end,
+       on_construct = function(pos)
+               minetest.sound_play("tnt_gunpowder_burning", {pos = pos, gain = 2})
+               minetest.get_node_timer(pos):start(1)
+       end,
 })
 
 minetest.register_abm({
@@ -426,9 +428,7 @@ function tnt.register_tnt(def)
                sounds = default.node_sound_wood_defaults(),
                on_punch = function(pos, node, puncher)
                        if puncher:get_wielded_item():get_name() == "default:torch" then
-                               minetest.sound_play("tnt_ignite", {pos = pos})
                                minetest.set_node(pos, {name = name .. "_burning"})
-                               minetest.get_node_timer(pos):start(4)
                        end
                end,
                on_blast = function(pos, intensity)
@@ -466,6 +466,10 @@ function tnt.register_tnt(def)
                end,
                -- unaffected by explosions
                on_blast = function() end,
+               on_construct = function(pos)
+                       minetest.sound_play("tnt_ignite", {pos = pos})
+                       minetest.get_node_timer(pos):start(4)
+               end,
        })
 end