diff options
Diffstat (limited to 'homedecor/bedroom.lua')
-rw-r--r-- | homedecor/bedroom.lua | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/homedecor/bedroom.lua b/homedecor/bedroom.lua new file mode 100644 index 0000000..683e53a --- /dev/null +++ b/homedecor/bedroom.lua @@ -0,0 +1,209 @@ +local S = homedecor.gettext + +local bedcolors = { + { "black", "#000000:200" }, --new cg72 + { "brown", "#603010:175" }, + { "blue", "#0000d0:150" }, + { "cyan", "#009fa7:150" }, --new cg72 + { "darkgrey", "#101010:175" }, + { "dark_green", "#007000:150" }, + { "green", "#00d000:150" }, --new cg72 + { "grey", "#101010:100" }, --new cg72 + { "magenta", "#e0048b:150" }, --new cg72 + { "orange", "#ff3000:150" }, + { "pink", "#ff80b0:150" }, + { "red", "#d00000:150" }, + { "violet", "#7000e0:150" }, + { "white", "#000000:000" }, --new cg72 + { "yellow", "#ffe000:150" } +} + +local bed_sbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 1.5 } +} + +local bed_cbox = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, -0.05, 1.5 }, + { -0.5, -0.5, 1.44, 0.5, 0.5, 1.5 }, + { -0.5, -0.5, -0.5, 0.5, 0.18, -0.44 }, + } +} + +local kbed_sbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 1.5 } +} + +local kbed_cbox = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 1.5, -0.05, 1.5 }, + { -0.5, -0.5, 1.44, 1.5, 0.5, 1.5 }, + { -0.5, -0.5, -0.5, 1.5, 0.18, -0.44 }, + } +} + +for i in ipairs(bedcolors) do + local color = bedcolors[i][1] + local color2=color + local hue = bedcolors[i][2] + + if color == "darkgrey" then + color2 = "dark_grey" + end + homedecor.register("bed_"..color.."_regular", { + mesh = "homedecor_bed_regular.obj", + tiles = { + "homedecor_bed_frame.png", + "default_wood.png", + "wool_white.png", + "wool_"..color2..".png", + "homedecor_bed_bottom.png", + "wool_"..color2..".png^[brighten", -- pillow + }, + inventory_image = "homedecor_bed_inv.png^(homedecor_bed_overlay_inv.png^[colorize:"..hue..")", + description = S("Bed (%s)"):format(color), + groups = {snappy=3}, + selection_box = bed_sbox, + collision_box = bed_cbox, + sounds = default.node_sound_wood_defaults(), + on_rotate = screwdriver.disallow, + after_place_node = function(pos, placer, itemstack, pointed_thing) + if not placer:get_player_control().sneak then + return homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, color) + end + end, + after_dig_node = function(pos) + homedecor.unextend_bed(pos, color) + end, + on_rightclick = function(pos, node, clicker) + if minetest.get_modpath("beds") then + beds.on_rightclick(pos, clicker) + else return end + end + }) + + homedecor.register("bed_"..color.."_extended", { + mesh = "homedecor_bed_extended.obj", + tiles = { + "homedecor_bed_frame.png", + "default_wood.png", + "wool_white.png", + "wool_"..color2..".png", + "homedecor_bed_bottom.png", + "wool_"..color2..".png^[brighten", + }, + selection_box = bed_sbox, + collision_box = bed_cbox, + sounds = default.node_sound_wood_defaults(), + expand = { forward = "air" }, + on_rotate = screwdriver.disallow, + after_dig_node = function(pos) + homedecor.unextend_bed(pos, color) + end, + on_rightclick = function(pos, node, clicker) + if minetest.get_modpath("beds") then + beds.on_rightclick(pos, clicker) + else return end + end, + drop = "homedecor:bed_"..color.."_regular" + }) + + homedecor.register("bed_"..color.."_kingsize", { + mesh = "homedecor_bed_kingsize.obj", + tiles = { + "homedecor_bed_frame.png", + "default_wood.png", + "wool_white.png", + "wool_"..color2..".png", + "homedecor_bed_bottom.png", + "wool_"..color2..".png^[brighten", + }, + inventory_image = "homedecor_bed_kingsize_inv.png^(homedecor_bed_kingsize_overlay_inv.png^[colorize:"..hue..")", + groups = {snappy=3, not_in_creative_inventory=1}, + description = S("Bed (%s, king sized)"):format(color), + groups = {snappy=3, not_in_creative_inventory=1}, + selection_box = kbed_sbox, + collision_box = kbed_cbox, + sounds = default.node_sound_wood_defaults(), + on_rotate = screwdriver.disallow, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + local inv = digger:get_inventory() + if digger:get_player_control().sneak and inv:room_for_item("main", "bed_"..color.."_regular 1") then + inv:remove_item("main", "homedecor:bed_"..color.."_kingsize 1") + inv:add_item("main", "homedecor:bed_"..color.."_regular 2") + end + end, + on_rightclick = function(pos, node, clicker) + if minetest.get_modpath("beds") then + beds.on_rightclick(pos, clicker) + else return end + end + }) + + minetest.register_alias("homedecor:bed_"..color.."_foot", "homedecor:bed_"..color.."_regular") + minetest.register_alias("homedecor:bed_"..color.."_footext", "homedecor:bed_"..color.."_extended") + minetest.register_alias("homedecor:bed_"..color.."_head", "air") + +end + + +for _, w in pairs({"mahogany", "oak"}) do + homedecor.register("nightstand_"..w.."_one_drawer", { + description = S("Nightstand with One Drawer ("..w..")"), + tiles = { 'homedecor_nightstand_'..w..'_tb.png', + 'homedecor_nightstand_'..w..'_tb.png^[transformFY', + 'homedecor_nightstand_'..w..'_lr.png^[transformFX', + 'homedecor_nightstand_'..w..'_lr.png', + 'homedecor_nightstand_'..w..'_back.png', + 'homedecor_nightstand_'..w..'_1_drawer_front.png'}, + node_box = { + type = "fixed", + fixed = { + { -8/16, 0, -30/64, 8/16, 8/16, 8/16 }, -- top half + { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64}, -- drawer face + { -8/16, -8/16, -30/64, -7/16, 0, 8/16 }, -- left + { 7/16, -8/16, -30/64, 8/16, 0, 8/16 }, -- right + { -8/16, -8/16, 7/16, 8/16, 0, 8/16 }, -- back + { -8/16, -8/16, -30/64, 8/16, -7/16, 8/16 } -- bottom + } + }, + groups = { snappy = 3 }, + sounds = default.node_sound_wood_defaults(), + selection_box = { type = "regular" }, + infotext=S("One-drawer Nightstand"), + inventory = { + size=8, + lockable=true, + }, + }) + + homedecor.register("nightstand_"..w.."_two_drawers", { + description = S("Nightstand with Two Drawers ("..w..")"), + tiles = { 'homedecor_nightstand_'..w..'_tb.png', + 'homedecor_nightstand_'..w..'_tb.png^[transformFY', + 'homedecor_nightstand_'..w..'_lr.png^[transformFX', + 'homedecor_nightstand_'..w..'_lr.png', + 'homedecor_nightstand_'..w..'_back.png', + 'homedecor_nightstand_'..w..'_2_drawer_front.png'}, + node_box = { + type = "fixed", + fixed = { + { -8/16, -8/16, -30/64, 8/16, 8/16, 8/16 }, -- main body + { -7/16, 1/16, -32/64, 7/16, 7/16, -29/64 }, -- top drawer face + { -7/16, -7/16, -32/64, 7/16, -1/16, -29/64 }, -- bottom drawer face + } + }, + groups = { snappy = 3 }, + sounds = default.node_sound_wood_defaults(), + selection_box = { type = "regular" }, + infotext=S("Two-drawer Nightstand"), + inventory = { + size=16, + lockable=true, + }, + }) +end |