homedecor_modpack/lighting.lua
Vanessa Ezekowitz 0c0ee930f9 glowlights and glowcubes now automatically place floor, ceiling, wall
varieties depending on whether you are pointing at the floor, ceiling,
or a wall.

Removed cross-crafting recipes, took excess lighting nodes out of
creative inventory, added drops for excess models to point them back to
floor or ceiling versions, as appropriate.

This change does not affect old maps or inventories.
2013-04-14 15:45:21 -04:00

516 lines
17 KiB
Lua

-- This file supplies glowlights
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if (minetest.get_modpath("intllib")) then
dofile(minetest.get_modpath("intllib").."/intllib.lua")
S = intllib.Getter(minetest.get_current_modname())
else
S = function ( s ) return s end
end
-- Yellow
minetest.register_node('homedecor:glowlight_thick_yellow', {
description = S("Yellow Glowlight (thick)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_yellow_tb.png',
'homedecor_glowlight_yellow_tb.png',
'homedecor_glowlight_thick_yellow_sides.png',
'homedecor_glowlight_thick_yellow_sides.png',
'homedecor_glowlight_thick_yellow_sides.png',
'homedecor_glowlight_thick_yellow_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.env:get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.env:get_node(above)
if node.name ~= "air" then return end
if above.x ~= under.x or above.z ~= under.z then
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.env:add_node(above, {name = 'homedecor:glowlight_thick_yellow_wall', param2 = fdir})
else
minetest.env:add_node(above, {name = 'homedecor:glowlight_thick_yellow'})
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
end
end
})
minetest.register_node('homedecor:glowlight_thick_yellow_wall', {
description = S("Yellow Glowlight (thick, on wall)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_thick_yellow_sides.png',
'homedecor_glowlight_thick_yellow_sides.png',
'homedecor_glowlight_thick_yellow_wall_sides.png',
'homedecor_glowlight_thick_yellow_wall_sides.png',
'homedecor_glowlight_yellow_tb.png',
'homedecor_glowlight_yellow_tb.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3, not_in_creative_inventory=1 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
drop = 'homedecor:glowlight_thick_yellow'
})
minetest.register_node('homedecor:glowlight_thin_yellow', {
description = S("Yellow Glowlight (thin)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_yellow_tb.png',
'homedecor_glowlight_yellow_tb.png',
'homedecor_glowlight_thin_yellow_sides.png',
'homedecor_glowlight_thin_yellow_sides.png',
'homedecor_glowlight_thin_yellow_sides.png',
'homedecor_glowlight_thin_yellow_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, 0.25, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, 0.25, -0.5, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.env:get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.env:get_node(above)
if node.name ~= "air" then return end
if above.x ~= under.x or above.z ~= under.z then
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.env:add_node(above, {name = 'homedecor:glowlight_thin_yellow_wall', param2 = fdir})
else
minetest.env:add_node(above, {name = 'homedecor:glowlight_thin_yellow'})
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
end
end
})
minetest.register_node('homedecor:glowlight_thin_yellow_wall', {
description = S("Yellow Glowlight (thin, on wall)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_thin_yellow_sides.png',
'homedecor_glowlight_thin_yellow_sides.png',
'homedecor_glowlight_thin_yellow_wall_sides.png',
'homedecor_glowlight_thin_yellow_wall_sides.png',
'homedecor_glowlight_yellow_tb.png',
'homedecor_glowlight_yellow_tb.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.25, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.25, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3, not_in_creative_inventory=1 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
drop = 'homedecor:glowlight_thin_yellow'
})
minetest.register_node('homedecor:glowlight_small_cube_yellow', {
description = S("Yellow Glowlight (small cube)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_cube_yellow_tb.png',
'homedecor_glowlight_cube_yellow_tb.png',
'homedecor_glowlight_cube_yellow_sides.png',
'homedecor_glowlight_cube_yellow_sides.png',
'homedecor_glowlight_cube_yellow_sides.png',
'homedecor_glowlight_cube_yellow_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.env:get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.env:get_node(above)
if node.name ~= "air" then return end
if above.x == under.x and above.z == under.z and pitch > 0 then
minetest.env:add_node(above, {name = 'homedecor:glowlight_small_cube_yellow_ceiling'})
else
minetest.env:add_node(above, {name = 'homedecor:glowlight_small_cube_yellow'})
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
end
end
})
minetest.register_node('homedecor:glowlight_small_cube_yellow_ceiling', {
description = S("Yellow Glowlight (small cube, on ceiling)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_cube_yellow_tb.png',
'homedecor_glowlight_cube_yellow_tb.png',
'homedecor_glowlight_cube_yellow_sides_ceiling.png',
'homedecor_glowlight_cube_yellow_sides_ceiling.png',
'homedecor_glowlight_cube_yellow_sides_ceiling.png',
'homedecor_glowlight_cube_yellow_sides_ceiling.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, 0, -0.25, 0.25, 0.5, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, 0, -0.25, 0.25, 0.5, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3, not_in_creative_inventory=1 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
drop = "homedecor:glowlight_small_cube_yellow",
})
-- White
minetest.register_node('homedecor:glowlight_thick_white', {
description = S("White Glowlight (thick)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_white_tb.png',
'homedecor_glowlight_white_tb.png',
'homedecor_glowlight_thick_white_sides.png',
'homedecor_glowlight_thick_white_sides.png',
'homedecor_glowlight_thick_white_sides.png',
'homedecor_glowlight_thick_white_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.env:get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.env:get_node(above)
if node.name ~= "air" then return end
if above.x ~= under.x or above.z ~= under.z then
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.env:add_node(above, {name = 'homedecor:glowlight_thick_white_wall', param2 = fdir})
else
minetest.env:add_node(above, {name = 'homedecor:glowlight_thick_white'})
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
end
end
})
minetest.register_node('homedecor:glowlight_thick_white_wall', {
description = S("White Glowlight (thick, on wall)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_thick_white_sides.png',
'homedecor_glowlight_thick_white_sides.png',
'homedecor_glowlight_thick_white_wall_sides.png',
'homedecor_glowlight_thick_white_wall_sides.png',
'homedecor_glowlight_white_tb.png',
'homedecor_glowlight_white_tb.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3, not_in_creative_inventory=1 },
light_source = LIGHT_MAX,
sounds = default.node_sound_wood_defaults(),
drop = 'homedecor:glowlight_thick_white'
})
minetest.register_node('homedecor:glowlight_thin_white', {
description = S("White Glowlight (thin)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_white_tb.png',
'homedecor_glowlight_white_tb.png',
'homedecor_glowlight_thin_white_sides.png',
'homedecor_glowlight_thin_white_sides.png',
'homedecor_glowlight_thin_white_sides.png',
'homedecor_glowlight_thin_white_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, 0.25, -0.5, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, 0.25, -0.5, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.env:get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.env:get_node(above)
if node.name ~= "air" then return end
if above.x ~= under.x or above.z ~= under.z then
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
minetest.env:add_node(above, {name = 'homedecor:glowlight_thin_white_wall', param2 = fdir})
else
minetest.env:add_node(above, {name = 'homedecor:glowlight_thin_white'})
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
end
end
})
minetest.register_node('homedecor:glowlight_thin_white_wall', {
description = S("White Glowlight (thin, on wall)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_thin_white_sides.png',
'homedecor_glowlight_thin_white_sides.png',
'homedecor_glowlight_thin_white_wall_sides.png',
'homedecor_glowlight_thin_white_wall_sides.png',
'homedecor_glowlight_white_tb.png',
'homedecor_glowlight_white_tb.png'
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.25, 0.5, 0.5, 0.5 }
},
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, 0.25, 0.5, 0.5, 0.5 }
},
sunlight_propagates = false,
paramtype = "light",
paramtype2 = "facedir",
walkable = true,
groups = { snappy = 3, not_in_creative_inventory=1 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
drop = 'homedecor:glowlight_thin_white'
})
minetest.register_node('homedecor:glowlight_small_cube_white', {
description = S("White Glowlight (small cube)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_cube_white_tb.png',
'homedecor_glowlight_cube_white_tb.png',
'homedecor_glowlight_cube_white_sides.png',
'homedecor_glowlight_cube_white_sides.png',
'homedecor_glowlight_cube_white_sides.png',
'homedecor_glowlight_cube_white_sides.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local node = minetest.env:get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.env:get_node(above)
if node.name ~= "air" then return end
if above.x == under.x and above.z == under.z and pitch > 0 then
minetest.env:add_node(above, {name = 'homedecor:glowlight_small_cube_white_ceiling'})
else
minetest.env:add_node(above, {name = 'homedecor:glowlight_small_cube_white'})
end
if not minetest.setting_getbool("creative_mode") then
itemstack:take_item()
end
return minetest.item_place_node(itemstack, placer, pointed_thing)
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer)
end
end
})
minetest.register_node('homedecor:glowlight_small_cube_white_ceiling', {
description = S("White Glowlight (small cube, on ceiling)"),
drawtype = "nodebox",
tiles = {
'homedecor_glowlight_cube_white_tb.png',
'homedecor_glowlight_cube_white_tb.png',
'homedecor_glowlight_cube_white_sides_ceiling.png',
'homedecor_glowlight_cube_white_sides_ceiling.png',
'homedecor_glowlight_cube_white_sides_ceiling.png',
'homedecor_glowlight_cube_white_sides_ceiling.png'
},
selection_box = {
type = "fixed",
fixed = { -0.25, 0, -0.25, 0.25, 0.5, 0.25 }
},
node_box = {
type = "fixed",
fixed = { -0.25, 0, -0.25, 0.25, 0.5, 0.25 }
},
sunlight_propagates = false,
paramtype = "light",
walkable = true,
groups = { snappy = 3, not_in_creative_inventory=1 },
light_source = LIGHT_MAX-1,
sounds = default.node_sound_wood_defaults(),
drop = "homedecor:glowlight_small_cube_white",
})