diff options
author | Sokomine <wegwerf@anarres.dyndns.org> | 2015-07-25 23:48:07 +0200 |
---|---|---|
committer | Sokomine <wegwerf@anarres.dyndns.org> | 2015-07-25 23:48:07 +0200 |
commit | 42521c5f2b2943a2f656d2fdfdcb3be3c76fb8de (patch) | |
tree | 5ec3d0c9c3121b54c918761f81cbfe1e7f78a8da /nodes_furniture.lua | |
parent | 46c6a4c47e1bbb0ad3cdbceab79a07ebd96d3d4f (diff) |
added the files in the same state as they where in on random_buildings/cottages
Diffstat (limited to 'nodes_furniture.lua')
-rw-r--r-- | nodes_furniture.lua | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/nodes_furniture.lua b/nodes_furniture.lua new file mode 100644 index 0000000..5d11675 --- /dev/null +++ b/nodes_furniture.lua @@ -0,0 +1,378 @@ +--------------------------------------------------------------------------------------- +-- furniture +--------------------------------------------------------------------------------------- +-- contains: +-- * a bed seperated into foot and head reagion so that it can be placed manually; it has +-- no other functionality than decoration! +-- * a sleeping mat - mostly for NPC that cannot afford a bet yet +-- * bench - if you don't have 3dforniture:chair, then this is the next best thing +-- * table - very simple one +-- * shelf - for stroring things; this one is 3d +-- * stovepipe - so that the smoke from the furnace can get away +-- * washing place - put it over a water source and you can 'wash' yourshelf +--------------------------------------------------------------------------------------- +-- TODO: change the textures of the bed (make the clothing white, foot path not entirely covered with cloth) + +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if intllib then + S = intllib.Getter() +else + S = function(s) return s end +end + +-- a bed without functionality - just decoration +minetest.register_node("cottages:bed_foot", { + description = S("Bed (foot region)"), + drawtype = "nodebox", + tiles = {"cottages_beds_bed_top_bottom.png", "default_wood.png", "cottages_beds_bed_side.png", "cottages_beds_bed_side.png", "cottages_beds_bed_side.png", "cottages_beds_bed_side.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + -- bed + {-0.5, 0.0, -0.5, 0.5, 0.3, 0.5}, + + -- stützen + {-0.5, -0.5, -0.5, -0.4, 0.5, -0.4}, + { 0.4,-0.5, -0.5, 0.5, 0.5, -0.4}, + + -- Querstrebe + {-0.4, 0.3, -0.5, 0.4, 0.5, -0.4} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.3, 0.5}, + } + }, + is_ground_content = false, +}) + +-- the bed is split up in two parts to avoid destruction of blocks on placement +minetest.register_node("cottages:bed_head", { + description = S("Bed (head region)"), + drawtype = "nodebox", + tiles = {"cottages_beds_bed_top_top.png", "default_wood.png", "cottages_beds_bed_side_top_r.png", "cottages_beds_bed_side_top_l.png", "default_wood.png", "cottages_beds_bed_side.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + -- bed + {-0.5, 0.0, -0.5, 0.5, 0.3, 0.5}, + + -- stützen + {-0.5,-0.5, 0.4, -0.4, 0.5, 0.5}, + { 0.4,-0.5, 0.4, 0.5, 0.5, 0.5}, + + -- Querstrebe + {-0.4, 0.3, 0.4, 0.4, 0.5, 0.5} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.3, 0.5}, + } + }, + is_ground_content = false, +}) + + +-- the basic version of a bed - a sleeping mat +-- to facilitate upgrade path straw mat -> sleeping mat -> bed, this uses a nodebox +minetest.register_node("cottages:sleeping_mat", { + description = S("sleeping mat"), + drawtype = 'nodebox', + tiles = { 'cottages_sleepingmat.png' }, -- done by VanessaE + wield_image = 'cottages_sleepingmat.png', + inventory_image = 'cottages_sleepingmat.png', + sunlight_propagates = true, + paramtype = 'light', + paramtype2 = "facedir", + walkable = false, + groups = { snappy = 3 }, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "wallmounted", + }, + node_box = { + type = "fixed", + fixed = { + {-0.48, -0.5,-0.48, 0.48, -0.45, 0.48}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.48, -0.5,-0.48, 0.48, -0.25, 0.48}, + } + }, + is_ground_content = false, +}) + + + +-- furniture; possible replacement: 3dforniture:chair +minetest.register_node("cottages:bench", { + drawtype = "nodebox", + description = S("simple wooden bench"), + tiles = {"cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png", "cottages_minimal_wood.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3}, + sounds = default.node_sound_wood_defaults(), + node_box = { + type = "fixed", + fixed = { + -- sitting area + {-0.5, -0.15, 0.1, 0.5, -0.05, 0.5}, + + -- stützen + {-0.4, -0.5, 0.2, -0.3, -0.15, 0.4}, + { 0.3, -0.5, 0.2, 0.4, -0.15, 0.4}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, 0, 0.5, 0, 0.5}, + } + }, + is_ground_content = false, +}) + + +-- a simple table; possible replacement: 3dforniture:table +minetest.register_node("cottages:table", { + description = S("table"), + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + tiles = {"cottages_minimal_wood.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + node_box = { + type = "fixed", + fixed = { + { -0.1, -0.5, -0.1, 0.1, 0.3, 0.1}, + { -0.5, 0.3, -0.5, 0.5, 0.4, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.4, 0.5}, + }, + }, + is_ground_content = false, +}) + + +-- looks better than two slabs impersonating a shelf; also more 3d than a bookshelf +-- the infotext shows if it's empty or not +minetest.register_node("cottages:shelf", { + description = S("open storage shelf"), + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + tiles = {"cottages_minimal_wood.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + node_box = { + type = "fixed", + fixed = { + + { -0.5, -0.5, -0.3, -0.4, 0.5, 0.5}, + { 0.4, -0.5, -0.3, 0.5, 0.5, 0.5}, + + { -0.5, -0.2, -0.3, 0.5, -0.1, 0.5}, + { -0.5, 0.3, -0.3, 0.5, 0.4, 0.5}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + + on_construct = function(pos) + + local meta = minetest.env:get_meta(pos); + + meta:set_string("formspec", + "size[8,8]".. + "list[current_name;main;0,0;8,3;]".. + "list[current_player;main;0,4;8,4;]") + meta:set_string("infotext", S("open storage shelf")) + local inv = meta:get_inventory(); + inv:set_size("main", 24); + end, + + can_dig = function( pos,player ) + local meta = minetest.env:get_meta( pos ); + local inv = meta:get_inventory(); + return inv:is_empty("main"); + end, + + on_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta( pos ); + meta:set_string('infotext', S('open storage shelf (in use)')); + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta( pos ); + local inv = meta:get_inventory(); + if( inv:is_empty("main")) then + meta:set_string('infotext', S('open storage shelf (empty)')); + end + end, + is_ground_content = false, + + +}) + +-- so that the smoke from a furnace can get out of a building +minetest.register_node("cottages:stovepipe", { + description = S("stovepipe"), + drawtype = "nodebox", + tiles = {"default_steel_block.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + node_box = { + type = "fixed", + fixed = { + { 0.20, -0.5, 0.20, 0.45, 0.5, 0.45}, + }, + }, + selection_box = { + type = "fixed", + fixed = { + { 0.20, -0.5, 0.20, 0.45, 0.5, 0.45}, + }, + }, + is_ground_content = false, +}) + + +-- this washing place can be put over a water source (it is open at the bottom) +minetest.register_node("cottages:washing", { + description = S("washing place"), + drawtype = "nodebox", + -- top, bottom, side1, side2, inner, outer + tiles = {"default_clay.png"}, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, -0.2, -0.2}, + + { -0.5, -0.5, -0.2, -0.4, 0.2, 0.5}, + { 0.4, -0.5, -0.2, 0.5, 0.2, 0.5}, + + { -0.4, -0.5, 0.4, 0.4, 0.2, 0.5}, + { -0.4, -0.5, -0.2, 0.4, 0.2, -0.1}, + + }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.2, 0.5}, + }, + }, + on_rightclick = function(pos, node, player) + -- works only with water beneath + local node_under = minetest.env:get_node( {x=pos.x, y=(pos.y-1), z=pos.z} ); + if( not( node_under ) or node_under.name == "ignore" or (node_under.name ~= 'default:water_source' and node_under.name ~= 'default:water_flowing')) then + minetest.chat_send_player( player:get_player_name(), S("Sorry. This washing place is out of water. Please place it above water!")); + else + minetest.chat_send_player( player:get_player_name(), S("You feel much cleaner after some washing.")); + end + end, + is_ground_content = false, + +}) + + + +--------------------------------------------------------------------------------------- +-- crafting receipes +--------------------------------------------------------------------------------------- +minetest.register_craft({ + output = "cottages:bed_foot", + recipe = { + {"wool:white", "", "", }, + {"default:wood", "", "", }, + {"default:stick", "", "", } + } +}) + +minetest.register_craft({ + output = "cottages:bed_head", + recipe = { + {"", "", "wool:white", }, + {"", "default:stick", "default:wood", }, + {"", "", "default:stick", } + } +}) + +minetest.register_craft({ + output = "cottages:sleeping_mat", + recipe = { + {"wool:white", "cottages:straw_mat","cottages:straw_mat" } + } +}) + + +minetest.register_craft({ + output = "cottages:table", + recipe = { + {"", "stairs:slab_wood", "", }, + {"", "default:stick", "" } + } +}) + +minetest.register_craft({ + output = "cottages:bench", + recipe = { + {"", "default:wood", "", }, + {"default:stick", "", "default:stick", } + } +}) + + +minetest.register_craft({ + output = "cottages:shelf", + recipe = { + {"default:stick", "default:wood", "default:stick", }, + {"default:stick", "default:wood", "default:stick", }, + {"default:stick", "", "default:stick"} + } +}) + +minetest.register_craft({ + output = "cottages:washing 2", + recipe = { + {"default:stick", }, + {"default:clay", }, + } +}) + +minetest.register_craft({ + output = "cottages:stovepipe 2", + recipe = { + {'default:steel_ingot', '', 'default:steel_ingot'}, + } +}) + |