diff --git a/game_api.txt b/game_api.txt index 8b6bf839..887f394e 100644 --- a/game_api.txt +++ b/game_api.txt @@ -312,8 +312,10 @@ TNT API `tnt.burn(position, [nodename])` -^ Ignite TNT at position, nodename isn't required unless already known. - +^ Ignite node at position, triggering its `on_ignite` callback (see fire mod). +If no such callback exists, fallback to turn tnt group nodes to their +"_burning" variant. + nodename isn't required unless already known. To make dropping items from node inventories easier, you can use the following helper function from 'default': diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 9870f891..e5ad5b16 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -260,13 +260,15 @@ end function tnt.burn(pos, nodename) local name = nodename or minetest.get_node(pos).name - local group = minetest.get_item_group(name, "tnt") - if group > 0 then + local def = minetest.registered_nodes[name] + if not def then + return + elseif def.on_ignite then + def.on_ignite(pos) + elseif minetest.get_item_group(name, "tnt") > 0 then minetest.sound_play("tnt_ignite", {pos = pos}) minetest.set_node(pos, {name = name .. "_burning"}) minetest.get_node_timer(pos):start(1) - elseif name == "tnt:gunpowder" then - minetest.set_node(pos, {name = "tnt:gunpowder_burning"}) end end