98 lines
2.8 KiB
Lua
98 lines
2.8 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local minetest, nodecore
|
|
= minetest, nodecore
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
local modname = minetest.get_current_modname()
|
|
|
|
minetest.register_node(modname .. ":torch", {
|
|
description = "Torch",
|
|
drawtype = "mesh",
|
|
mesh = "nc_torch_torch.obj",
|
|
tiles = {
|
|
"nc_fire_coal_4.png",
|
|
"nc_tree_tree_top.png",
|
|
"nc_fire_coal_4.png^[lowpart:50:nc_tree_tree_side.png",
|
|
"[combine:1x1"
|
|
},
|
|
selection_box = nodecore.fixedbox(-1/16, -0.5, -1/16, 1/16, 6/16, 1/16),
|
|
collision_box = nodecore.fixedbox(-1/16, -0.5, -1/16, 1/16, 6/16, 1/16),
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
groups = {
|
|
snappy = 1,
|
|
falling_repose = 1,
|
|
flammable = 1,
|
|
firestick = 3,
|
|
stack_as_node = 1
|
|
},
|
|
sounds = nodecore.sounds("nc_tree_sticky"),
|
|
on_ignite = function(pos)
|
|
minetest.set_node(pos, {name = modname .. ":torch_lit"})
|
|
minetest.sound_play("nc_fire_ignite", {gain = 1, pos = pos})
|
|
local expire = minetest.get_gametime() + nodecore.boxmuller() * 5 + 60
|
|
minetest.get_meta(pos):set_float("expire", expire)
|
|
return true
|
|
end
|
|
})
|
|
|
|
nodecore.register_craft({
|
|
label = "assemble torch",
|
|
normal = {y = 1},
|
|
nodes = {
|
|
{match = "nc_fire:lump_coal", replace = "air"},
|
|
{y = -1, match = "nc_woodwork:staff", replace = modname .. ":torch"},
|
|
}
|
|
})
|
|
|
|
-- Note: Torch dropped as item is sort of unrealistic, perhaps drop as node in future
|
|
minetest.register_node(modname .. ":torch_lit", {
|
|
description = "Lit Torch",
|
|
drawtype = "mesh",
|
|
mesh = "nc_torch_torch.obj",
|
|
tiles = {
|
|
"nc_fire_coal_4.png^nc_fire_ember_4.png",
|
|
"nc_tree_tree_top.png",
|
|
"nc_fire_coal_4.png^nc_fire_ember_4.png^[lowpart:50:nc_tree_tree_side.png",
|
|
{
|
|
name = "nc_torch_flame.png",
|
|
animation = {
|
|
["type"] = "vertical_frames",
|
|
aspect_w = 3,
|
|
aspect_h = 8,
|
|
length = 0.6
|
|
}
|
|
}
|
|
},
|
|
selection_box = nodecore.fixedbox(-1/16, -0.5, -1/16, 1/16, 6/16, 1/16),
|
|
collision_box = nodecore.fixedbox(-1/16, -0.5, -1/16, 1/16, 6/16, 1/16),
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
light_source = 8,
|
|
groups = {
|
|
snappy = 1,
|
|
falling_repose = 1,
|
|
stack_as_node = 1
|
|
},
|
|
stack_max = 1,
|
|
sounds = nodecore.sounds("nc_tree_sticky"),
|
|
preserve_metadata = function(_, _, oldmeta, drops)
|
|
drops[1]:get_meta():set_float("expire", oldmeta.expire)
|
|
end,
|
|
after_place_node = function(pos, _, itemstack)
|
|
minetest.get_meta(pos):set_float("expire",
|
|
itemstack:get_meta():get_float("expire"))
|
|
end
|
|
})
|
|
|
|
minetest.register_node(modname .. ":wield_light", {
|
|
drawtype = "airlike",
|
|
paramtype = "light",
|
|
light_source = 8,
|
|
pointable = false,
|
|
walkable = false,
|
|
on_timer = function(pos)
|
|
minetest.set_node(pos, {name = "air"})
|
|
end,
|
|
})
|