diff options
Diffstat (limited to 'homedecor_bathroom/init.lua')
-rw-r--r-- | homedecor_bathroom/init.lua | 595 |
1 files changed, 595 insertions, 0 deletions
diff --git a/homedecor_bathroom/init.lua b/homedecor_bathroom/init.lua new file mode 100644 index 0000000..0811b70 --- /dev/null +++ b/homedecor_bathroom/init.lua @@ -0,0 +1,595 @@ + +local S = homedecor.gettext + +minetest.register_node(":homedecor:bathroom_tiles_dark", { + description = S("Bathroom/kitchen tiles (dark)"), + tiles = { + "homedecor_bathroom_tiles_bg.png" + }, + overlay_tiles = { + { name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 }, + }, + paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette_extended.png", + groups = {cracky=3, ud_param2_colorable = 1}, + sounds = default.node_sound_stone_defaults(), + on_construct = unifieddyes.on_construct, +}) + +minetest.register_node(":homedecor:bathroom_tiles_medium", { + description = S("Bathroom/kitchen tiles (medium)"), + tiles = { + "homedecor_bathroom_tiles_bg.png" + }, + overlay_tiles = { + { name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 }, + }, + paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette_extended.png", + groups = {cracky=3, ud_param2_colorable = 1}, + sounds = default.node_sound_stone_defaults(), + on_construct = unifieddyes.on_construct, +}) + +minetest.register_node(":homedecor:bathroom_tiles_light", { + description = S("Bathroom/kitchen tiles (light)"), + tiles = { + "homedecor_bathroom_tiles_bg.png" + }, + overlay_tiles = { + { name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff }, + }, + paramtype = "light", + paramtype2 = "color", + palette = "unifieddyes_palette_extended.png", + groups = {cracky=3, ud_param2_colorable = 1}, + sounds = default.node_sound_stone_defaults(), + on_construct = unifieddyes.on_construct, +}) + +local tr_cbox = { + type = "fixed", + fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 } +} + +homedecor.register("towel_rod", { + description = S("Towel rod with towel"), + mesh = "homedecor_towel_rod.obj", + tiles = { + "homedecor_generic_terrycloth.png", + "default_wood.png", + }, + inventory_image = "homedecor_towel_rod_inv.png", + selection_box = tr_cbox, + walkable = false, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3}, + sounds = default.node_sound_defaults(), +}) + +homedecor.register("medicine_cabinet", { + description = S("Medicine cabinet"), + mesh = "homedecor_medicine_cabinet.obj", + tiles = { + 'default_wood.png', + 'homedecor_medicine_cabinet_mirror.png' + }, + inventory_image = "homedecor_medicine_cabinet_inv.png", + selection_box = { + type = "fixed", + fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5} + }, + walkable = false, + groups = { snappy = 3 }, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, puncher, pointed_thing) + node.name = "homedecor:medicine_cabinet_open" + minetest.swap_node(pos, node) + end, + infotext=S("Medicine cabinet"), + inventory = { + size=6, + }, +}) + +homedecor.register("medicine_cabinet_open", { + mesh = "homedecor_medicine_cabinet_open.obj", + tiles = { + 'default_wood.png', + 'homedecor_medicine_cabinet_mirror.png', + 'homedecor_medicine_cabinet_inside.png' + }, + selection_box = { + type = "fixed", + fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5} + }, + walkable = false, + groups = { snappy = 3, not_in_creative_inventory=1 }, + drop = "homedecor:medicine_cabinet", + on_punch = function(pos, node, puncher, pointed_thing) + node.name = "homedecor:medicine_cabinet" + minetest.swap_node(pos, node) + end, +}) + +-- "Sanitation" related + +local toilet_sbox = { + type = "fixed", + fixed = { -6/16, -8/16, -8/16, 6/16, 9/16, 8/16 }, +} + +local toilet_cbox = { + type = "fixed", + fixed = { + {-6/16, -8/16, -8/16, 6/16, 1/16, 8/16 }, + {-6/16, -8/16, 4/16, 6/16, 9/16, 8/16 } + } +} + +homedecor.register("toilet", { + description = S("Toilet"), + mesh = "homedecor_toilet_closed.obj", + tiles = { + "building_blocks_marble.png", + "building_blocks_marble.png", + "building_blocks_marble.png", + { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey } + }, + selection_box = toilet_sbox, + node_box = toilet_cbox, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + node.name = "homedecor:toilet_open" + minetest.set_node(pos, node) + end +}) + +homedecor.register("toilet_open", { + mesh = "homedecor_toilet_open.obj", + tiles = { + "building_blocks_marble.png", + "building_blocks_marble.png", + "building_blocks_marble.png", + "default_water.png", + { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey } + }, + selection_box = toilet_sbox, + collision_box = toilet_cbox, + drop = "homedecor:toilet", + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + node.name = "homedecor:toilet" + minetest.set_node(pos, node) + minetest.sound_play("homedecor_toilet_flush", { + pos=pos, + max_hear_distance = 5, + gain = 1, + }) + end +}) + +-- toilet paper :-) + +local tp_cbox = { + type = "fixed", + fixed = { -0.25, 0.125, 0.0625, 0.1875, 0.4375, 0.5 } +} + +homedecor.register("toilet_paper", { + description = S("Toilet paper"), + mesh = "homedecor_toilet_paper.obj", + tiles = { + "homedecor_generic_quilted_paper.png", + "default_wood.png" + }, + inventory_image = "homedecor_toilet_paper_inv.png", + selection_box = tp_cbox, + walkable = false, + groups = {snappy=3,oddly_breakable_by_hand=3}, + sounds = default.node_sound_defaults(), +}) + +--Sink + +local sink_sbox = { + type = "fixed", + fixed = { -5/16, -8/16, 1/16, 5/16, 8/16, 8/16 } +} + +local sink_cbox = { + type = "fixed", + fixed = { + { -5/16, 5/16, 1/16, -4/16, 8/16, 8/16 }, + { 5/16, 5/16, 1/16, 4/16, 8/16, 8/16 }, + { -5/16, 5/16, 1/16, 5/16, 8/16, 2/16 }, + { -5/16, 5/16, 6/16, 5/16, 8/16, 8/16 }, + { -4/16, -8/16, 1/16, 4/16, 5/16, 6/16 } + } +} + +homedecor.register("sink", { + description = S("Bathroom Sink"), + mesh = "homedecor_bathroom_sink.obj", + tiles = { + "building_blocks_marble.png", + "building_blocks_marble.png", + "default_water.png" + }, + inventory_image="homedecor_bathroom_sink_inv.png", + selection_box = sink_sbox, + collision_box = sink_cbox, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + on_destruct = function(pos) + homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) + end +}) + +--Taps + +local function taps_on_rightclick(pos, node, clicker, itemstack, pointed_thing) + local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z}) + if below and + below.name == "homedecor:shower_tray" or + below.name == "homedecor:sink" or + below.name == "homedecor:kitchen_cabinet_with_sink" or + below.name == "homedecor:kitchen_cabinet_with_sink_locked" then + local particledef = { + outlet = { x = 0, y = -0.44, z = 0.28 }, + velocity_x = { min = -0.1, max = 0.1 }, + velocity_y = -0.3, + velocity_z = { min = -0.1, max = 0 }, + spread = 0, + die_on_collision = true, + } + homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet") + end + return itemstack +end + +homedecor.register("taps", { + description = S("Bathroom taps/faucet"), + mesh = "homedecor_bathroom_faucet.obj", + tiles = { + { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }, + "homedecor_generic_metal_bright.png", + "homedecor_generic_metal.png", + "homedecor_generic_metal_bright.png" + }, + inventory_image = "3dforniture_taps_inv.png", + wield_image = "3dforniture_taps_inv.png", + selection_box = { + type = "fixed", + fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 }, + }, + walkable = false, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + on_rightclick = taps_on_rightclick, + on_destruct = homedecor.stop_particle_spawner, + on_rotate = screwdriver.disallow +}) + +homedecor.register("taps_brass", { + description = S("Bathroom taps/faucet (brass)"), + mesh = "homedecor_bathroom_faucet.obj", + tiles = { + "homedecor_generic_metal_brass.png", + "homedecor_generic_metal_brass.png", + "homedecor_generic_metal.png", + "homedecor_generic_metal_brass.png" + }, + inventory_image = "3dforniture_taps_brass_inv.png", + wield_image = "3dforniture_taps_brass_inv.png", + selection_box = { + type = "fixed", + fixed = { -4/16, -7/16, 4/16, 4/16, -4/16, 8/16 }, + }, + walkable = false, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + on_rightclick = taps_on_rightclick, + on_destruct = homedecor.stop_particle_spawner, + on_rotate = screwdriver.disallow +}) + +--Shower Tray + +homedecor.register("shower_tray", { + description = S("Shower Tray"), + tiles = { + "forniture_marble_base_ducha_top.png", + "building_blocks_marble.png" + }, + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, -0.45, 0.5 }, + { -0.5, -0.45, -0.5, 0.5, -0.4, -0.45 }, + { -0.5, -0.45, 0.45, 0.5, -0.4, 0.5 }, + { -0.5, -0.45, -0.45, -0.45, -0.4, 0.45 }, + { 0.45, -0.45, -0.45, 0.5, -0.4, 0.45 } + }, + }, + selection_box = homedecor.nodebox.slab_y(0.1), + groups = {cracky=2}, + sounds = default.node_sound_stone_defaults(), + on_destruct = function(pos) + homedecor.stop_particle_spawner({x=pos.x, y=pos.y+2, z=pos.z}) -- the showerhead + homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) -- the taps, if any + end +}) + +--Shower Head + + +local sh_cbox = { + type = "fixed", + fixed = { -0.2, -0.4, -0.05, 0.2, 0.1, 0.5 } +} + +homedecor.register("shower_head", { + drawtype = "mesh", + mesh = "homedecor_shower_head.obj", + tiles = { + "homedecor_generic_metal.png", + "homedecor_shower_head.png" + }, + inventory_image = "homedecor_shower_head_inv.png", + description = S("Shower Head"), + groups = {snappy=3}, + selection_box = sh_cbox, + walkable = false, + on_rotate = screwdriver.disallow, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-2.0, z=pos.z}) + if below and below.name == "homedecor:shower_tray" then + local particledef = { + outlet = { x = 0, y = -0.42, z = 0.1 }, + velocity_x = { min = -0.15, max = 0.15 }, + velocity_y = -2, + velocity_z = { min = -0.3, max = 0.1 }, + spread = 0.12 + } + homedecor.start_particle_spawner(pos, node, particledef, "homedecor_shower") + end + return itemstack + end, + on_destruct = function(pos) + homedecor.stop_particle_spawner(pos) + end +}) + +homedecor.register("bathtub_clawfoot_brass_taps", { + drawtype = "mesh", + mesh = "homedecor_bathtub_clawfoot.obj", + tiles = { + { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }, + "homedecor_generic_metal_bright.png", + "homedecor_generic_metal_bright.png", + "homedecor_generic_metal_brass.png", + "building_blocks_marble.png", + "homedecor_bathtub_clawfoot_bottom_inside.png", + }, + description = S("Bathtub, clawfoot, with brass taps"), + groups = {cracky=3}, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 1.5, 0.3125, 0.5 }, + }, + sounds = default.node_sound_stone_defaults(), +}) + +homedecor.register("bathtub_clawfoot_chrome_taps", { + drawtype = "mesh", + mesh = "homedecor_bathtub_clawfoot.obj", + tiles = { + { name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }, + "homedecor_generic_metal_bright.png", + "homedecor_generic_metal_bright.png", + "homedecor_generic_metal_bright.png", + "building_blocks_marble.png", + "homedecor_bathtub_clawfoot_bottom_inside.png", + }, + description = S("Bathtub, clawfoot, with chrome taps"), + groups = {cracky=3}, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 1.5, 0.3125, 0.5 }, + }, + sounds = default.node_sound_stone_defaults(), +}) + +local bs_cbox = { + type = "fixed", + fixed = { -8/16, -8/16, 1/16, 8/16, 8/16, 8/16 } +} + +homedecor.register("bathroom_set", { + drawtype = "mesh", + mesh = "homedecor_bathroom_set.obj", + tiles = { + "homedecor_bathroom_set_mirror.png", + "homedecor_bathroom_set_tray.png", + "homedecor_bathroom_set_toothbrush.png", + "homedecor_bathroom_set_cup.png", + "homedecor_bathroom_set_toothpaste.png", + }, + inventory_image = "homedecor_bathroom_set_inv.png", + description = S("Bathroom sundries set"), + groups = {snappy=3}, + selection_box = bs_cbox, + walkable = false, + sounds = default.node_sound_glass_defaults(), +}) + +-- aliases + +minetest.register_alias("3dforniture:toilet", "homedecor:toilet") +minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open") +minetest.register_alias("3dforniture:sink", "homedecor:sink") +minetest.register_alias("3dforniture:taps", "homedecor:taps") +minetest.register_alias("3dforniture:shower_tray", "homedecor:shower_tray") +minetest.register_alias("3dforniture:shower_head", "homedecor:shower_head") +minetest.register_alias("3dforniture:table_lamp", "homedecor:table_lamp_off") + +minetest.register_alias("toilet", "homedecor:toilet") +minetest.register_alias("sink", "homedecor:sink") +minetest.register_alias("taps", "homedecor:taps") +minetest.register_alias("shower_tray", "homedecor:shower_tray") +minetest.register_alias("shower_head", "homedecor:shower_head") +minetest.register_alias("table_lamp", "homedecor:table_lamp_off") + +-- convert old static nodes + +homedecor.old_static_bathroom_tiles = { + "homedecor:tiles_1", + "homedecor:tiles_2", + "homedecor:tiles_3", + "homedecor:tiles_4", + "homedecor:tiles_red", + "homedecor:tiles_tan", + "homedecor:tiles_yellow", + "homedecor:tiles_green", + "homedecor:tiles_blue" +} + +local old_to_color = { + "light_grey", + "grey", + "black", + "black" +} + +minetest.register_lbm({ + name = ":homedecor:convert_bathroom_tiles", + label = "Convert bathroom tiles to use param2 color", + run_at_every_load = false, + nodenames = homedecor.old_static_bathroom_tiles, + action = function(pos, node) + local name = node.name + local newname = "homedecor:bathroom_tiles_light" + local a = string.find(name, "_") + local color = string.sub(name, a + 1) + + if color == "tan" then + color = "yellow_s50" + elseif color == "1" or color == "2" or color == "3" or color == "4" then + if color == "4" then + newname = "homedecor:bathroom_tiles_medium" + end + color = old_to_color[tonumber(color)] + elseif color ~= "yellow" then + color = color.."_s50" + end + + local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "extended") + + minetest.set_node(pos, { name = newname, param2 = paletteidx }) + local meta = minetest.get_meta(pos) + meta:set_string("dye", "unifieddyes:"..color) + meta:set_string("palette", "ext") + end +}) + +-- crafting + + +minetest.register_craft({ + output = "homedecor:towel_rod", + recipe = { + { "group:wood", "group:stick", "group:wood" }, + { "", "building_blocks:terrycloth_towel", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:toilet_paper", + recipe = { + { "", "default:paper", "default:paper" }, + { "group:wood", "group:stick", "default:paper" }, + { "", "default:paper", "default:paper" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:medicine_cabinet", + recipe = { + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" }, + { "group:stick", "default:glass", "group:stick" } + }, +}) + + +-- bathroom/kitchen tiles + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_light 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:white" } + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:bathroom_tiles_light", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:bathroom_tiles_light", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_medium 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:grey" } + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:bathroom_tiles_medium", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:bathroom_tiles_medium", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft( { + output = "homedecor:bathroom_tiles_dark 4", + recipe = { + { "group:marble", "group:marble", "" }, + { "group:marble", "group:marble", "dye:dark_grey" } + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:bathroom_tiles_dark", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:bathroom_tiles_dark", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft({ + output = "homedecor:bathroom_set", + recipe = { + { "", "homedecor:glass_table_small_round", "" }, + { "basic_materials:plastic_sheet", "homedecor:glass_table_small_round", "basic_materials:plastic_sheet" }, + { "group:stick", "basic_materials:plastic_sheet", "group:stick" } + }, +}) |