summaryrefslogtreecommitdiff
path: root/homedecor_windows_and_treatments/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'homedecor_windows_and_treatments/init.lua')
-rw-r--r--homedecor_windows_and_treatments/init.lua533
1 files changed, 533 insertions, 0 deletions
diff --git a/homedecor_windows_and_treatments/init.lua b/homedecor_windows_and_treatments/init.lua
new file mode 100644
index 0000000..04bc376
--- /dev/null
+++ b/homedecor_windows_and_treatments/init.lua
@@ -0,0 +1,533 @@
+
+local S = homedecor.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} }
+ }
+})
+
+-- Various kinds of window shutters
+
+local shutters = {
+ "mahogany",
+ "red",
+ "yellow",
+ "forest_green",
+ "light_blue",
+ "violet",
+ "black",
+ "dark_grey",
+ "grey",
+ "white",
+}
+
+local shutter_cbox = {
+ type = "wallmounted",
+ wall_top = { -0.5, 0.4375, -0.5, 0.5, 0.5, 0.5 },
+ wall_bottom = { -0.5, -0.5, -0.5, 0.5, -0.4375, 0.5 },
+ wall_side = { -0.5, -0.5, -0.5, -0.4375, 0.5, 0.5 }
+}
+
+local inv = "homedecor_window_shutter_inv.png^[colorize:#a87034:150"
+
+homedecor.register("shutter", {
+ mesh = "homedecor_window_shutter.obj",
+ tiles = {
+ { name = "homedecor_window_shutter.png", color = 0xffa87034 }
+ },
+ description = S("Wooden Shutter"),
+ inventory_image = inv,
+ wield_image = inv,
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ airbrush_replacement_node = "homedecor:shutter_colored",
+ groups = { snappy = 3, ud_param2_colorable = 1 },
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = shutter_cbox,
+ node_box = shutter_cbox,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
+ end,
+})
+
+homedecor.register("shutter_colored", {
+ mesh = "homedecor_window_shutter.obj",
+ tiles = { "homedecor_window_shutter.png" },
+ description = S("Wooden Shutter"),
+ inventory_image = "homedecor_window_shutter_inv.png",
+ wield_image = "homedecor_window_shutter_inv.png",
+ paramtype2 = "colorwallmounted",
+ palette = "unifieddyes_palette_colorwallmounted.png",
+ groups = { snappy = 3 , not_in_creative_inventory = 1, ud_param2_colorable = 1},
+ sounds = default.node_sound_wood_defaults(),
+ selection_box = shutter_cbox,
+ node_box = shutter_cbox,
+ after_place_node = function(pos, placer, itemstack, pointed_thing)
+ unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
+ end,
+})
+
+minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet")
+minetest.register_alias("homedecor:shutter_oak", "homedecor:shutter")
+
+-- convert old shutters to param2 coloring
+
+homedecor.old_shutter_nodes = {}
+
+for _, color in ipairs(shutters) do
+ table.insert(homedecor.old_shutter_nodes, "homedecor:shutter_"..color)
+end
+
+minetest.register_lbm({
+ name = ":homedecor:convert_shutters",
+ label = "Convert shutter static nodes to use param2 color",
+ run_at_every_load = false,
+ nodenames = homedecor.old_shutter_nodes,
+ action = function(pos, node)
+ local name = node.name
+ local color = string.sub(name, string.find(name, "_") + 1)
+
+ if color == "mahogany" then
+ color = "dark_red"
+ elseif color == "forest_green" then
+ color = "dark_green"
+ elseif color == "light_blue" then
+ color = "medium_cyan"
+ elseif color == "red" then
+ color = "medium_red"
+ end
+
+ local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
+ local param2 = paletteidx + node.param2
+
+ minetest.set_node(pos, { name = "homedecor:shutter_colored", param2 = param2 })
+ local meta = minetest.get_meta(pos)
+ meta:set_string("dye", "unifieddyes:"..color)
+ end
+})
+
+-- 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
+})
+
+-- crafting
+
+
+minetest.register_craft( {
+ output = "homedecor:shutter 2",
+ recipe = {
+ { "group:stick", "group:stick" },
+ { "group:stick", "group:stick" },
+ { "group:stick", "group:stick" },
+ },
+})
+
+unifieddyes.register_color_craft({
+ output = "homedecor:shutter_colored",
+ palette = "wallmounted",
+ type = "shapeless",
+ neutral_node = "homedecor:shutter",
+ recipe = {
+ "NEUTRAL_NODE",
+ "MAIN_DYE"
+ }
+})
+
+minetest.register_craft({
+ type = "fuel",
+ recipe = "homedecor:shutter_oak",
+ burntime = 30,
+})
+
+
+minetest.register_craft( {
+ output = "homedecor:curtain_closed 4",
+ recipe = {
+ { "wool:white", "", ""},
+ { "wool:white", "", ""},
+ { "wool:white", "", ""},
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:curtain_closed 4",
+ recipe = {
+ { "cottages:wool", "", ""},
+ { "cottages:wool", "", ""},
+ { "cottages:wool", "", ""},
+ },
+})
+
+unifieddyes.register_color_craft({
+ output = "homedecor:curtain_closed",
+ palette = "wallmounted",
+ type = "shapeless",
+ neutral_node = "homedecor:curtain_closed",
+ recipe = {
+ "NEUTRAL_NODE",
+ "MAIN_DYE"
+ }
+})
+
+unifieddyes.register_color_craft({
+ output = "homedecor:curtain_open",
+ palette = "wallmounted",
+ type = "shapeless",
+ neutral_node = "homedecor:curtain_open",
+ recipe = {
+ "NEUTRAL_NODE",
+ "MAIN_DYE"
+ }
+})
+
+local mats = {
+ { "brass", "homedecor:pole_brass" },
+ { "wrought_iron", "homedecor:pole_wrought_iron" },
+ { "wood", "group:stick" }
+}
+
+for i in ipairs(mats) do
+ local material = mats[i][1]
+ local ingredient = mats[i][2]
+ minetest.register_craft( {
+ output = "homedecor:curtainrod_"..material.." 3",
+ recipe = {
+ { ingredient, ingredient, ingredient },
+ },
+ })
+end
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:window_plain 8",
+ recipe = {
+ "dye:white",
+ "dye:white",
+ "dye:white",
+ "dye:white",
+ "building_blocks:woodglass"
+ }
+})
+
+minetest.register_craft({
+ type = "shapeless",
+ output = "homedecor:window_quartered",
+ recipe = {
+ "dye:white",
+ "group:stick",
+ "group:stick",
+ "homedecor:window_plain"
+ }
+})
+
+minetest.register_craft({
+ output = "homedecor:blinds_thin",
+ recipe = {
+ { "group:stick", "basic_materials:plastic_sheet", "group:stick" },
+ { "farming:string", "basic_materials:plastic_strip", "" },
+ { "", "basic_materials:plastic_strip", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:blinds_thick",
+ recipe = {
+ { "group:stick", "basic_materials:plastic_sheet", "group:stick" },
+ { "farming:string", "basic_materials:plastic_strip", "basic_materials:plastic_strip" },
+ { "", "basic_materials:plastic_strip", "basic_materials:plastic_strip" },
+ },
+})
+
+minetest.register_craft( {
+ output = "homedecor:window_flowerbox",
+ recipe = {
+ { "homedecor:roof_tile_terracotta", "default:dirt", "homedecor:roof_tile_terracotta" },
+ { "", "homedecor:roof_tile_terracotta", "" },
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stained_glass 8",
+ recipe = {
+ {"", "dye:blue", ""},
+ {"dye:red", "default:glass", "dye:green"},
+ {"", "dye:yellow", ""},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stained_glass 3",
+ recipe = {
+ {"", "dye:blue", ""},
+ {"dye:red", "xpanes:pane_flat", "dye:green"},
+ {"", "dye:yellow", ""},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stained_glass 2",
+ recipe = {
+ {"", "dye:blue", ""},
+ {"dye:red", "cottages:glass_pane_side", "dye:green"},
+ {"", "dye:yellow", ""},
+ },
+})
+
+minetest.register_craft({
+ output = "homedecor:stained_glass 2",
+ recipe = {
+ {"", "dye:blue", ""},
+ {"dye:red", "cottages:glass_pane", "dye:green"},
+ {"", "dye:yellow", ""},
+ },
+})
+