TNT: Gunpowder (and tnt.burn) will trigger the on_ignite of nodes

The previous behaviour is kept as fallback for compatibility, for when the on_ignite
is not defined in the node.
This commit is contained in:
Fernando Carmona Varo 2016-11-13 16:08:07 +01:00 committed by paramat
parent 011ad78b42
commit be9121214c
2 changed files with 10 additions and 6 deletions

@ -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':

@ -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