local S = homedecor_i18n.gettext homedecor.register("window_quartered", { description = S("Window (quartered)"), tiles = { "homedecor_window_sides.png", "homedecor_window_sides.png", "homedecor_window_sides.png", "homedecor_window_sides.png", "homedecor_window_quartered.png", "homedecor_window_quartered.png" }, use_texture_alpha = true, groups = {snappy=3}, sounds = default.node_sound_glass_defaults(), node_box = { type = "fixed", fixed = { {-0.5, -0.5, 0.025, 0.5, 0.5, 0}, -- NodeBox1 {-0.5, 0.4375, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox2 {-0.5, -0.5, -0.0625, 0.5, -0.4375, 0.0625}, -- NodeBox3 {-0.5, -0.0625, -0.025, 0.5, 0.0625, 0.025}, -- NodeBox4 {0.4375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox5 {-0.5, -0.5, -0.0625, -0.4375, 0.5, 0.0625}, -- NodeBox6 {-0.0625, -0.5, -0.025, 0.0625, 0.5, 0.025}, -- NodeBox7 } }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625} } }) homedecor.register("window_plain", { description = S("Window (plain)"), tiles = { "homedecor_window_sides.png", "homedecor_window_sides.png", "homedecor_window_sides.png", "homedecor_window_sides.png", "homedecor_window_frame.png", "homedecor_window_frame.png" }, use_texture_alpha = true, groups = {snappy=3}, sounds = default.node_sound_glass_defaults(), node_box = { type = "fixed", fixed = { {-0.5, -0.5, 0.025, 0.5, 0.5, 0}, -- NodeBox1 {-0.5, 0.4375, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox2 {-0.5, -0.5, -0.0625, 0.5, -0.4375, 0.0625}, -- NodeBox3 {0.4375, -0.5, -0.0625, 0.5, 0.5, 0.0625}, -- NodeBox4 {-0.5, -0.5, -0.0625, -0.4375, 0.5, 0.0625}, -- NodeBox5 } }, selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625} } }) local wb1_cbox = { type = "fixed", fixed = { -8/16, -8/16, 5/16, 8/16, 8/16, 8/16 }, } homedecor.register("blinds_thick", { description = S("Window Blinds (thick)"), mesh = "homedecor_windowblind_thick.obj", inventory_image = "homedecor_windowblind_thick_inv.png", tiles = { "homedecor_windowblind_strings.png", "homedecor_windowblinds.png" }, walkable = false, groups = {snappy=3}, sounds = default.node_sound_wood_defaults(), selection_box = wb1_cbox }) local wb2_cbox = { type = "fixed", fixed = { -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, } homedecor.register("blinds_thin", { description = S("Window Blinds (thin)"), mesh = "homedecor_windowblind_thin.obj", inventory_image = "homedecor_windowblind_thin_inv.png", tiles = { "homedecor_windowblind_strings.png", "homedecor_windowblinds.png" }, walkable = false, groups = {snappy=3}, sounds = default.node_sound_wood_defaults(), selection_box = wb2_cbox }) minetest.register_node("homedecor:curtain_closed", { description = S("Curtains"), tiles = { "homedecor_curtain.png" }, inventory_image = "homedecor_curtain.png", drawtype = 'signlike', use_texture_alpha = true, walkable = false, groups = { snappy = 3, ud_param2_colorable = 1 }, sounds = default.node_sound_leaves_defaults(), paramtype = "light", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", selection_box = { type = "wallmounted" }, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}) if string.find(topnode.name, "homedecor:curtainrod") then -- Open the curtains local fdir = node.param2 minetest.set_node(pos, { name = "homedecor:curtain_open", param2 = fdir }) end return itemstack end }) minetest.register_node("homedecor:curtain_open", { description = S("Curtains (open)"), tiles = { "homedecor_curtain_open.png" }, inventory_image = "homedecor_curtain_open.png", drawtype = 'signlike', use_texture_alpha = true, walkable = false, groups = { snappy = 3, ud_param2_colorable = 1 }, sounds = default.node_sound_leaves_defaults(), paramtype = "light", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", selection_box = { type = "wallmounted" }, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) end, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local topnode = minetest.get_node({x=pos.x, y=pos.y+1.0, z=pos.z}) if string.find(topnode.name, "homedecor:curtainrod") then -- Close the curtains local fdir = node.param2 minetest.set_node(pos, { name = "homedecor:curtain_closed", param2 = fdir }) end return itemstack end }) local mats = { { "brass", S("brass"), "homedecor_generic_metal_brass.png" }, { "wrought_iron", S("wrought iron"), "homedecor_generic_metal_wrought_iron.png" }, { "wood", S("wood"), "default_wood.png" } } for _, m in ipairs(mats) do local material, mat_name, texture = unpack(m) homedecor.register("curtainrod_"..material, { tiles = { texture }, inventory_image = "homedecor_curtainrod_"..material.."_inv.png", description = S("Curtain Rod (@1)", mat_name), groups = { snappy = 3 }, node_box = { type = "fixed", fixed = { {-0.5, -0.5, 0.375, 0.5, -0.4375, 0.4375}, {-0.4375, -0.5, 0.4375, -0.375, -0.4375, 0.5}, {0.375, -0.5, 0.4375, 0.4375, -0.4375, 0.5} } } }) end homedecor.register("window_flowerbox", { description = S("Window flowerbox"), tiles = { "homedecor_flowerbox_top.png", "homedecor_flowerbox_bottom.png", "homedecor_flowerbox_sides.png" }, inventory_image = "homedecor_flowerbox_inv.png", sounds = default.node_sound_stone_defaults(), groups = { snappy = 3 }, node_box = { type = "fixed", fixed = { {-0.375, 0.25, -0.125, 0.375, 0.5, 0.375}, -- NodeBox1 {-0.3125, 0.4375, 0.375, -0.25, 0.4875, 0.5}, -- NodeBox2 {0.25, 0.4375, 0.375, 0.3125, 0.4875, 0.5}, -- NodeBox3 } } }) homedecor.register("stained_glass", { description = S("Stained Glass"), tiles = {"homedecor_stained_glass.png"}, inventory_image = "homedecor_stained_glass.png", groups = {snappy=3}, use_texture_alpha = true, light_source = 3, sounds = default.node_sound_glass_defaults(), node_box = { type = "fixed", fixed = { {-0.5, -0.5, 0.46875, 0.5, 0.5, 0.5} } } }) -- Convert old curtain nodes to param2-colorization local curtaincolors = { "red", "green", "blue", "white", "pink", "violet", } homedecor.old_static_curtain_nodes = {} for _, color in ipairs(curtaincolors) do table.insert(homedecor.old_static_curtain_nodes, "homedecor:curtain_"..color) table.insert(homedecor.old_static_curtain_nodes, "homedecor:curtain_open_"..color) end minetest.register_lbm({ name = "homedecor:convert_curtains", label = "Convert static curtain nodes to use param2 color", run_at_every_load = false, nodenames = homedecor.old_static_curtain_nodes, action = function(pos, node) local name = node.name local color = string.sub(name, 19) local openclose = "closed" if string.find(color, "open") then color = string.sub(color, 6) openclose = "open" end local metadye = "medium_"..color if color == "white" then metadye = "white" end local newnode = "homedecor:curtain_"..openclose local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..metadye, "wallmounted") local newparam2 = paletteidx + (node.param2 % 8) minetest.set_node(pos, { name = newnode, param2 = newparam2 }) local meta = minetest.get_meta(pos) meta:set_string("dye", "unifieddyes:"..metadye) end })