local S = homedecor_i18n.gettext local table_colors = { { "", S("Table"), homedecor.plain_wood }, { "_mahogany", S("Mahogany Table"), homedecor.mahogany_wood }, { "_white", S("White Table"), homedecor.white_wood } } for _, t in ipairs(table_colors) do local suffix, desc, texture = unpack(t) homedecor.register("table"..suffix, { description = desc, tiles = { texture }, node_box = { type = "fixed", fixed = { { -0.4, -0.5, -0.4, -0.3, 0.4, -0.3 }, { 0.3, -0.5, -0.4, 0.4, 0.4, -0.3 }, { -0.4, -0.5, 0.3, -0.3, 0.4, 0.4 }, { 0.3, -0.5, 0.3, 0.4, 0.4, 0.4 }, { -0.5, 0.4, -0.5, 0.5, 0.5, 0.5 }, { -0.4, -0.2, -0.3, -0.3, -0.1, 0.3 }, { 0.3, -0.2, -0.4, 0.4, -0.1, 0.3 }, { -0.3, -0.2, -0.4, 0.4, -0.1, -0.3 }, { -0.3, -0.2, 0.3, 0.3, -0.1, 0.4 }, }, }, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, sounds = default.node_sound_wood_defaults(), }) end local kc_cbox = { type = "fixed", fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 }, } local ac_cbox = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0, 0.5 }, {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } } } homedecor.register("kitchen_chair_wood", { description = S("Kitchen chair"), mesh = "homedecor_kitchen_chair.obj", tiles = { homedecor.plain_wood, homedecor.plain_wood }, inventory_image = "homedecor_chair_wood_inv.png", paramtype2 = "wallmounted", selection_box = kc_cbox, collision_box = kc_cbox, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, sounds = default.node_sound_wood_defaults(), after_place_node = unifieddyes.fix_rotation_nsew, on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y+0 -- where do I put my ass ? homedecor.sit(pos, node, clicker) return itemstack end }) homedecor.register("kitchen_chair_padded", { description = S("Kitchen chair"), mesh = "homedecor_kitchen_chair.obj", tiles = { homedecor.plain_wood, "wool_white.png", }, inventory_image = "homedecor_chair_padded_inv.png", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", selection_box = kc_cbox, collision_box = kc_cbox, groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) end, on_rotate = unifieddyes.fix_after_screwdriver_nsew, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y+0 -- where do I put my ass ? homedecor.sit(pos, node, clicker) return itemstack end }) homedecor.register("armchair", { description = S("Armchair"), mesh = "forniture_armchair.obj", tiles = { "wool_white.png", { name = "wool_dark_grey.png", color = 0xffffffff }, { name = "default_wood.png", color = 0xffffffff } }, inventory_image = "homedecor_armchair_inv.png", paramtype2 = "colorwallmounted", palette = "unifieddyes_palette_colorwallmounted.png", groups = {snappy=3, ud_param2_colorable = 1}, sounds = default.node_sound_wood_defaults(), node_box = ac_cbox, after_place_node = function(pos, placer, itemstack, pointed_thing) unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing) end, on_rotate = unifieddyes.fix_after_screwdriver_nsew, }) local ob_cbox = { type = "fixed", fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 } } minetest.register_node(":homedecor:openframe_bookshelf", { description = S("Bookshelf (open-frame)"), drawtype = "mesh", mesh = "homedecor_openframe_bookshelf.obj", tiles = { "homedecor_openframe_bookshelf_books.png", "default_wood.png" }, groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3}, sounds = default.node_sound_wood_defaults(), paramtype = "light", paramtype2 = "facedir", selection_box = ob_cbox, collision_box = ob_cbox, }) homedecor.register("wall_shelf", { description = S("Wall Shelf"), tiles = { "homedecor_wood_table_large_edges.png", }, groups = { snappy = 3 }, sounds = default.node_sound_wood_defaults(), node_box = { type = "fixed", fixed = { {-0.5, 0.4, 0.47, 0.5, 0.47, 0.5}, {-0.5, 0.47, -0.1875, 0.5, 0.5, 0.5} } } }) -- Aliases for 3dforniture mod. minetest.register_alias("3dforniture:table", "homedecor:table") minetest.register_alias("3dforniture:chair", "homedecor:chair") minetest.register_alias("3dforniture:armchair", "homedecor:armchair_black") minetest.register_alias("homedecor:armchair", "homedecor:armchair_black") minetest.register_alias('table', 'homedecor:table') minetest.register_alias('chair', 'homedecor:chair') minetest.register_alias('armchair', 'homedecor:armchair') -- conversion to param2 colorization homedecor.old_static_chairs = {} local chair_colors = { "black", "brown", "blue", "cyan", "dark_grey", "dark_green", "green", "grey", "magenta", "orange", "pink", "red", "violet", "white", "yellow", } for _, color in ipairs(chair_colors) do table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color) table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color) end table.insert(homedecor.old_static_chairs, "homedecor:chair") minetest.register_lbm({ name = "homedecor:convert_chairs", label = "Convert homedecor chairs to use param2 color", run_at_every_load = false, nodenames = homedecor.old_static_chairs, action = function(pos, node) local name = node.name local paletteidx = 0 local color local a,b = string.find(name, "_") if a then color = string.sub(name, a+1) if color == "blue" then color = "medium_blue" elseif color == "violet" then color = "medium_violet" elseif color == "red" then color = "medium_red" elseif color == "black" then color = "dark_grey" end paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted") end local old_fdir = math.floor(node.param2 % 32) local new_fdir = 3 if old_fdir == 0 then new_fdir = 3 elseif old_fdir == 1 then new_fdir = 4 elseif old_fdir == 2 then new_fdir = 2 elseif old_fdir == 3 then new_fdir = 5 end local param2 = paletteidx + new_fdir local newname = "homedecor:armchair" if node.name == "homedecor:chair" then newname = "homedecor:kitchen_chair_wood" elseif string.find(node.name, "homedecor:chair_") then newname = "homedecor:kitchen_chair_padded" end minetest.set_node(pos, { name = newname, param2 = param2 }) local meta = minetest.get_meta(pos) if color then meta:set_string("dye", "unifieddyes:"..color) end end })