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

View File

@ -312,8 +312,10 @@ TNT API
`tnt.burn(position, [nodename])` `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 To make dropping items from node inventories easier, you can use the
following helper function from 'default': following helper function from 'default':

View File

@ -260,13 +260,15 @@ end
function tnt.burn(pos, nodename) function tnt.burn(pos, nodename)
local name = nodename or minetest.get_node(pos).name local name = nodename or minetest.get_node(pos).name
local group = minetest.get_item_group(name, "tnt") local def = minetest.registered_nodes[name]
if group > 0 then 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.sound_play("tnt_ignite", {pos = pos})
minetest.set_node(pos, {name = name .. "_burning"}) minetest.set_node(pos, {name = name .. "_burning"})
minetest.get_node_timer(pos):start(1) minetest.get_node_timer(pos):start(1)
elseif name == "tnt:gunpowder" then
minetest.set_node(pos, {name = "tnt:gunpowder_burning"})
end end
end end