50 lines
1.2 KiB
Lua
50 lines
1.2 KiB
Lua
local default_on_rightclick = function(pos)
|
|
local node = minetest.get_node(pos)
|
|
local add_props = minetest.registered_nodes[node.name].add_properties
|
|
|
|
if not add_props or not add_props.swap_light then
|
|
return
|
|
end
|
|
|
|
minetest.set_node(pos, {name="multidecor:" .. add_props.swap_light.name})
|
|
end
|
|
|
|
|
|
function register.register_light(name, base_def, add_def, craft_def)
|
|
local def = table.copy(base_def)
|
|
|
|
def.type = "light"
|
|
def.paramtype2 = "facedir"
|
|
|
|
if add_def then
|
|
if add_def.recipe then
|
|
craft_def = add_def
|
|
else
|
|
def.add_properties = add_def
|
|
end
|
|
end
|
|
|
|
if def.callbacks then
|
|
def.callbacks.on_rightclick = def.callbacks.on_rightclick or default_on_rightclick
|
|
else
|
|
def.callbacks = {on_rightclick = default_on_rightclick}
|
|
end
|
|
|
|
register.register_furniture_unit(name, def, craft_def)
|
|
|
|
local def2 = table.copy(def)
|
|
local swap_light_name = def2.add_properties.swap_light.name
|
|
def2.light_source = def2.add_properties.swap_light.light_level or 8
|
|
def2.drop = "multidecor:" .. name
|
|
|
|
if def2.groups then
|
|
def2.groups.not_in_creative_inventory = 1
|
|
else
|
|
def2.groups = {not_in_creative_inventory = 1}
|
|
end
|
|
def2.add_properties.swap_light = {name=name}
|
|
|
|
register.register_furniture_unit(swap_light_name, def2)
|
|
end
|
|
|