-- =================================================================== local sra = ocutil.safe_register_alias local neednode -- =================================================================== screwdriver = screwdriver or {} -- =================================================================== sra ("xdecor:chair" , "3dforniture:chair" ) sra ("xdecor:table" , "3dforniture:table" ) -- =================================================================== local xdecor_pixelbox = function (size, boxes) local fixed = {} for _, box in pairs (boxes) do -- "unpack" has been changed to "table.unpack" in -- newest Lua versions local x, y, z, w, h, l = unpack (box) fixed [#fixed+1] = { (x / size) - 0.5, (y / size) - 0.5, (z / size) - 0.5, ((x + w) / size) - 0.5, ((y + h) / size) - 0.5, ((z + l) / size) - 0.5 } end return { type="fixed", fixed=fixed } end -- =================================================================== local slab_y = function (height, shift) return { -0.5, -0.5 + (shift or 0), -0.5, 0.5, -0.5 + height + (shift or 0), 0.5 } end -- =================================================================== neednode = "xdecor:barrel" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Barrel" , on_place = minetest.rotate_node , sounds = default.node_sound_wood_defaults() , groups = { choppy=2, oddly_breakable_by_hand=1, flammable=2 } , tiles = { "xdecor_barrel_top.png" , "xdecor_barrel_top.png" , "xdecor_barrel_sides.png" , } , }) end -- =================================================================== neednode = "xdecor:cactusbrick" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Cactus Brick" , groups = { cracky=1 } , sounds = default.node_sound_stone_defaults() , tiles = { "xdecor_cactusbrick.png" } , }) end -- =================================================================== -- Use "3dforniture" version instead for now. if false then neednode = "xdecor:chair" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Chair", tiles = { "xdecor_wood.png" } , sounds = default.node_sound_wood_defaults() , on_rotate = screwdriver.rotate_simple , groups = { choppy=3, oddly_breakable_by_hand=2, flammable=2 } , node_box = xdecor_pixelbox (16, { { 3, 0, 11.0, 2, 16, 2 } , { 11, 0, 11.0, 2, 16, 2 } , { 5, 9, 11.5, 6, 6, 1 } , { 3, 0, 3.0, 2, 6, 2 } , { 11, 0, 3.0, 2, 6, 2 } , { 3, 6, 3.0, 10, 2, 8 } , }) , }) end end -- =================================================================== neednode = "xdecor:coalstone_tile" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Coal Stone Tile" , groups = { cracky=1 } , sounds = default.node_sound_stone_defaults() , tiles = { "xdecor_coalstone_tile.png" } , }) end -- =================================================================== neednode = "xdecor:desertstone_tile" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Desert Stone Tile" , groups = { cracky=1 } , sounds = default.node_sound_stone_defaults() , tiles = { "xdecor_desertstone_tile.png" } , }) end -- =================================================================== neednode = "xdecor:hard_clay" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Hardened Clay" , groups = { cracky=1 } , sounds = default.node_sound_stone_defaults() , tiles = { "xdecor_hard_clay.png" } , }) end -- =================================================================== neednode = "xdecor:ivy" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Ivy", drawtype = "signlike", walkable = false, climbable = true, groups = { snappy=3, flora=1, attached_node=1, plant=1, flammable=3 } , paramtype2 = "wallmounted", selection_box = {type="wallmounted"}, tiles = {"xdecor_ivy.png"}, inventory_image = "xdecor_ivy.png", wield_image = "xdecor_ivy.png", sounds = default.node_sound_leaves_defaults() }) end -- =================================================================== neednode = "xdecor:lantern" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "xdecor lantern" , light_source = 13 , drawtype = "plantlike" , inventory_image = "xdecor_lantern_inv.png" , wield_image = "xdecor_lantern_inv.png" , paramtype2 = "wallmounted" , walkable = false , groups = { snappy=3, attached_node=1 } , tiles = {{ name = "xdecor_lantern.png" , animation = { type="vertical_frames", length=1.5 } , }} , selection_box = xdecor_pixelbox (16, {{ 4, 0, 4, 8, 16, 8 }}) }) end -- =================================================================== neednode = "xdecor:moonbrick" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Moon Brick" , groups = { cracky=1 } , sounds = default.node_sound_stone_defaults() , tiles = { "xdecor_moonbrick.png" } , }) end -- =================================================================== neednode = "xdecor:stone_tile" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Stone Tile" , groups = { cracky=1 } , sounds = default.node_sound_stone_defaults() , tiles = { "xdecor_stone_tile.png" } , }) end -- =================================================================== -- Doesn't look right. Use "3dforniture" version instead. if false then neednode = "xdecor:table" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Table" , tiles = { "xdecor_wood.png" } , groups = { choppy=2, oddly_breakable_by_hand=1, flammable=2 } , sounds = default.node_sound_wood_defaults() , node_box = xdecor_pixelbox (16, { { 0.0, 14, 0.0, 16, 2, 16 } , { 5.5, 0, 5.5, 5, 14, 6 } , }) }) end end -- =================================================================== neednode = "xdecor:tv" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Television" , light_source = 11 , groups = { cracky=3, oddly_breakable_by_hand=2 } , on_rotate = screwdriver.rotate_simple , tiles = { "xdecor_television_left.png^[transformR270" , "xdecor_television_left.png^[transformR90" , "xdecor_television_left.png^[transformFX" , "xdecor_television_left.png" , "xdecor_television_back.png" , { name = "xdecor_television_front_animated.png" , animation = { type="vertical_frames", length=80.0 } } } }) end -- =================================================================== neednode = "xdecor:woodframed_glass" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = "Wood Framed Glass" , drawtype = "glasslike_framed" , tiles = { "xdecor_woodframed_glass.png" , "xdecor_woodframed_glass_detail.png" } , groups = { cracky=2, oddly_breakable_by_hand=1 } , sounds = default.node_sound_glass_defaults() , sunlight_propagates = true , }) end -- =================================================================== for _, lb in pairs ({ "iron", "wooden" }) do neednode = "xdecor:" .. lb .. "_lightbox" if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = lb:gsub ("^%l", string.upper).." Light Box" , tiles = { "xdecor_" .. lb .. "_lightbox.png" } , groups = { cracky=3, choppy=3, oddly_breakable_by_hand=2 } , light_source = 13 , sounds = default.node_sound_glass_defaults() , }) end end -- =================================================================== local register_pane = function (name, desc, def) if ocutil.mod_exists ("xdecor") then local xdpng = "xdecor_" .. name .. ".png" xpanes.register_pane (name, { description = desc , tiles = { xdpng } , drawtype = "airlike" , paramtype = "light" , inventory_image = xdpng , recipe = def.recipe , wield_image = xdpng , groups = def.groups , textures = { xdpng , xdpng , "xpanes_space.png" } , sounds = def.sounds or default.node_sound_defaults() , }) end end -- =================================================================== register_pane ("chainlink", "Chainlink", { groups = {cracky = 3, oddly_breakable_by_hand = 2, pane = 1}, recipe = { {"default:steel_ingot", "", "default:steel_ingot"}, {"", "default:steel_ingot", ""}, {"default:steel_ingot", "", "default:steel_ingot"} } }) -- =================================================================== register_pane ("bamboo_frame", "Bamboo Frame", { groups = { choppy = 3, oddly_breakable_by_hand = 2, pane = 1, flammable = 2 } , recipe = { { "default:papyrus" , "default:papyrus" , "default:papyrus" } , { "default:papyrus" , "farming:cotton" , "default:papyrus" } , { "default:papyrus" , "default:papyrus" , "default:papyrus" } , } }) -- =================================================================== register_pane ("rusty_bar", "Rusty Iron Bars", { sounds = default.node_sound_stone_defaults(), groups = {cracky = 2, pane = 1}, recipe = { {"", "default:dirt", ""}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} } }) -- =================================================================== register_pane ("wood_frame", "Wood Frame", { sounds = default.node_sound_wood_defaults() , groups = {choppy = 2, pane = 1, flammable = 2} , recipe = { { "group:wood" , "group:stick" , "group:wood" } , { "group:stick" , "group:stick" , "group:stick" } , { "group:wood" , "group:stick" , "group:wood" } , } }) -- =================================================================== local register_storage = function (name, desc, def) neednode = "xdecor:" .. name if minetest.registered_nodes [neednode] == nil then minetest.register_node (":" .. neednode, { description = desc , inventory = { size=def.inv_size or 24 } , infotext = desc , tiles = def.tiles , node_box = def.node_box , on_rotate = def.on_rotate , on_place = def.on_place , sounds = default.node_sound_wood_defaults() , groups = def.groups or { choppy=2, oddly_breakable_by_hand=1, flammable=2 } , }) end end -- =================================================================== register_storage ("cabinet", "Wooden Cabinet", { on_rotate = screwdriver.rotate_simple , tiles = { "xdecor_cabinet_sides.png" , "xdecor_cabinet_sides.png" , "xdecor_cabinet_sides.png" , "xdecor_cabinet_sides.png" , "xdecor_cabinet_sides.png" , "xdecor_cabinet_front.png" , } }) -- =================================================================== register_storage ("cabinet_half", "Half Wooden Cabinet", { inv_size = 8 , node_box = slab_y (0.5, 0.5) , on_rotate = screwdriver.rotate_simple , tiles = { "xdecor_cabinet_sides.png" , "xdecor_cabinet_sides.png" , "xdecor_half_cabinet_sides.png" , "xdecor_half_cabinet_sides.png" , "xdecor_half_cabinet_sides.png" , "xdecor_half_cabinet_front.png" , } }) -- =================================================================== register_storage ("empty_shelf", "Empty Shelf", { on_rotate = screwdriver.rotate_simple , tiles = { "default_wood.png" , "default_wood.png" , "default_wood.png" , "default_wood.png" , "default_wood.png^xdecor_empty_shelf.png" , } }) -- =================================================================== register_storage ("multishelf", "Multi Shelf", { on_rotate = screwdriver.rotate_simple , tiles = { "default_wood.png" , "default_wood.png" , "default_wood.png" , "default_wood.png" , "default_wood.png^xdecor_multishelf.png" , } , }) -- =================================================================== -- End of module.