diff options
Diffstat (limited to 'homedecor_furniture/init.lua')
-rw-r--r-- | homedecor_furniture/init.lua | 529 |
1 files changed, 529 insertions, 0 deletions
diff --git a/homedecor_furniture/init.lua b/homedecor_furniture/init.lua new file mode 100644 index 0000000..108f28d --- /dev/null +++ b/homedecor_furniture/init.lua @@ -0,0 +1,529 @@ + +local S = homedecor.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.3125, -0.5, 0.3125, 0.3125, 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 +}) + +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("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 = { + "default_wood.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} + } + } +}) + +-- Crafts + + +minetest.register_craft({ + output = "homedecor:table", + recipe = { + { "default:wood","default:wood", "default:wood" }, + { "group:stick", "", "group:stick" }, + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:table_mahogany", + recipe = { + "homedecor:table", + "dye:brown", + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:table_mahogany", + recipe = { + "homedecor:table", + "unifieddyes:dark_orange", + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:table_white", + recipe = { + "homedecor:table", + "dye:white", + }, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:table", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:table_mahogany", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:table_white", + burntime = 30, +}) + +minetest.register_craft({ + output = "homedecor:kitchen_chair_wood 2", + recipe = { + { "group:stick",""}, + { "group:wood","group:wood" }, + { "group:stick","group:stick" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:armchair 2", + recipe = { + { "wool:white",""}, + { "group:wood","group:wood" }, + { "wool:white","wool:white" }, + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:armchair", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:armchair", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft({ + type = "shapeless", + output = "homedecor:kitchen_chair_padded", + recipe = { + "homedecor:kitchen_chair_wood", + "wool:white", + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:kitchen_chair_padded", + palette = "wallmounted", + type = "shapeless", + neutral_node = "homedecor:kitchen_chair_padded", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:kitchen_chair_wood", + burntime = 15, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:kitchen_chair_padded", + burntime = 15, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:armchair", + burntime = 30, +}) + +minetest.register_craft({ + output = "homedecor:standing_lamp_off", + recipe = { + {"homedecor:table_lamp_off"}, + {"group:stick"}, + {"group:stick"}, + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:standing_lamp_off", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:standing_lamp_off", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "homedecor:table_lamp_off", + burntime = 10, +}) + +minetest.register_craft({ + output = "homedecor:table_lamp_off", + recipe = { + { "wool:white", "default:torch", "wool:white"}, + { "", "group:stick", ""}, + { "", "stairs:slab_wood", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:table_lamp_off", + recipe = { + { "cottages:wool", "default:torch", "cottages:wool"}, + { "", "group:stick", ""}, + { "", "stairs:slab_wood", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:table_lamp_off", + recipe = { + { "wool:white", "default:torch", "wool:white"}, + { "", "group:stick", ""}, + { "", "moreblocks:slab_wood", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:table_lamp_off", + recipe = { + { "cottages:wool", "default:torch", "cottages:wool"}, + { "", "group:stick", ""}, + { "", "moreblocks:slab_wood", "" }, + }, +}) + +unifieddyes.register_color_craft({ + output = "homedecor:table_lamp_off", + palette = "extended", + type = "shapeless", + neutral_node = "homedecor:table_lamp_off", + recipe = { + "NEUTRAL_NODE", + "MAIN_DYE" + } +}) + +minetest.register_craft({ + output = "homedecor:toilet", + recipe = { + { "","","bucket:bucket_water"}, + { "group:marble","group:marble", "group:marble" }, + { "", "bucket:bucket_empty", "" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:sink", + recipe = { + { "group:marble","bucket:bucket_empty", "group:marble" }, + { "", "group:marble", "" } + }, +}) + +minetest.register_craft({ + output = "homedecor:taps", + recipe = { + { "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:taps_brass", + recipe = { + { "technic:brass_ingot","bucket:bucket_water", "technic:brass_ingot" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:shower_tray", + recipe = { + { "group:marble","bucket:bucket_empty", "group:marble" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:shower_head", + recipe = { + {"default:steel_ingot", "bucket:bucket_water"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:bathtub_clawfoot_brass_taps", + recipe = { + { "homedecor:taps_brass", "", "" }, + { "group:marble", "", "group:marble" }, + {"default:steel_ingot", "group:marble", "default:steel_ingot"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:bathtub_clawfoot_chrome_taps", + recipe = { + { "homedecor:taps", "", "" }, + { "group:marble", "", "group:marble" }, + {"default:steel_ingot", "group:marble", "default:steel_ingot"}, + }, +}) + +minetest.register_craft({ + output = "homedecor:bars 6", + recipe = { + { "default:steel_ingot","default:steel_ingot","default:steel_ingot" }, + { "homedecor:pole_wrought_iron","homedecor:pole_wrought_iron","homedecor:pole_wrought_iron" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:L_binding_bars 3", + recipe = { + { "homedecor:bars","" }, + { "homedecor:bars","homedecor:bars" }, + }, +}) + +minetest.register_craft({ + output = "homedecor:torch_wall 10", + recipe = { + { "default:coal_lump" }, + { "default:steel_ingot" }, + }, +}) + +-- 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 +}) |