42 lines
1.3 KiB
Lua
42 lines
1.3 KiB
Lua
local function disintigrate(pos, radius, node_name, user)
|
|
local p1 = vector.subtract(pos, radius)
|
|
local p2 = vector.add(pos, radius)
|
|
local nodes = minetest.find_nodes_in_area(p1, p2, node_name)
|
|
for _, node in pairs(nodes) do
|
|
if not minetest.is_protected(node, user) then
|
|
minetest.remove_node(node)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
local nodes = {{'fun_caves:pyramid_1', 'default:sandstone_block'},}
|
|
for _, node in pairs(nodes) do
|
|
local node_name = node[1]
|
|
local comp = node[2] or node_name
|
|
local node_texture = minetest.registered_items[node_name].tiles
|
|
if type(node_texture) == 'table' then
|
|
node_texture = node_texture[1]
|
|
end
|
|
local newnode = fun_caves.clone_node(node_name)
|
|
local _, d_name = node_name:match('(.*:)(.*)')
|
|
local d_name_u = d_name:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end)
|
|
newnode.description = d_name_u.." Bomb"
|
|
newnode.inventory_image = '[inventorycube{tnt_top.png{'..node_texture..'{tnt_side.png'
|
|
newnode.on_punch = function(pos, node, puncher, pointed_thing)
|
|
minetest.after(5, function()
|
|
disintigrate(pos, 5, node_name, puncher)
|
|
minetest.remove_node(pos)
|
|
end)
|
|
end
|
|
minetest.register_node("fun_caves:"..d_name..'_bomb', newnode)
|
|
|
|
minetest.register_craft({
|
|
output = "fun_caves:"..d_name..'_bomb',
|
|
recipe = {
|
|
{"", comp, ""},
|
|
{comp, "tnt:gunpowder", comp},
|
|
{"", comp, ""}
|
|
}
|
|
})
|
|
end
|