multidecor/decor_api/lighting.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