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:
parent
011ad78b42
commit
be9121214c
|
@ -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':
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue