mirror of
https://github.com/Sokomine/cottages.git
synced 2025-07-15 22:20:25 +02:00
added the files in the same state as they where in on random_buildings/cottages
This commit is contained in:
378
nodes_furniture.lua
Normal file
378
nodes_furniture.lua
Normal file
@ -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'},
|
||||
}
|
||||
})
|
||||
|
Reference in New Issue
Block a user