summaryrefslogtreecommitdiff
path: root/nodes_furniture.lua
diff options
context:
space:
mode:
authorSokomine <wegwerf@anarres.dyndns.org>2015-07-25 23:48:07 +0200
committerSokomine <wegwerf@anarres.dyndns.org>2015-07-25 23:48:07 +0200
commit42521c5f2b2943a2f656d2fdfdcb3be3c76fb8de (patch)
tree5ec3d0c9c3121b54c918761f81cbfe1e7f78a8da /nodes_furniture.lua
parent46c6a4c47e1bbb0ad3cdbceab79a07ebd96d3d4f (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.lua378
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'},
+ }
+})
+