forked from nalc/homedecor_modpack
		
	Reorganize files
This commit is contained in:
		
							
								
								
									
										151
									
								
								homedecor/books.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								homedecor/books.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,151 @@ | ||||
| local S = homedecor.gettext | ||||
|  | ||||
| local bookcolors = { | ||||
| 	"red", | ||||
| 	"green", | ||||
| 	"blue", | ||||
| 	"violet", | ||||
| 	"grey", | ||||
| 	"brown" | ||||
| } | ||||
|  | ||||
| local BOOK_FORMNAME = "homedecor:book_form" | ||||
|  | ||||
| for c in ipairs(bookcolors) do | ||||
| 	local color = bookcolors[c] | ||||
| 	local color_d = S(bookcolors[c]) | ||||
|  | ||||
| 	local function book_dig(pos, node, digger) | ||||
| 		if minetest.is_protected(pos, digger:get_player_name()) then return end | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		local stack = ItemStack({ | ||||
| 			name = "homedecor:book_"..color, | ||||
| 			metadata = meta:get_string("text"), | ||||
| 		}) | ||||
| 		stack = digger:get_inventory():add_item("main", stack) | ||||
| 		if not stack:is_empty() then | ||||
| 			minetest.item_drop(stack, digger, pos) | ||||
| 		end | ||||
| 		minetest.remove_node(pos) | ||||
| 	end | ||||
|  | ||||
| homedecor.register("book_"..color, { | ||||
| 	description = S("Book (%s)"):format(color_d), | ||||
| 	mesh = "homedecor_book.obj", | ||||
| 	tiles = { "homedecor_book_"..color..".png" }, | ||||
| 	inventory_image = "homedecor_book_"..color.."_inv.png", | ||||
| 	wield_image = "homedecor_book_"..color.."_inv.png", | ||||
| 	groups = { snappy=3, oddly_breakable_by_hand=3, book=1 }, | ||||
| 	stack_max = 1, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		local fdir = node.param2 | ||||
| 		minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir }) | ||||
| 	end, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		local plname = placer:get_player_name() | ||||
| 		local pos = pointed_thing.under | ||||
| 		local node = minetest.get_node(pos) | ||||
| 		local n = minetest.registered_nodes[node.name] | ||||
| 		if not n.buildable_to then | ||||
| 			pos = pointed_thing.above | ||||
| 			node = minetest.get_node(pos) | ||||
| 			n = minetest.registered_nodes[node.name] | ||||
| 			if not n.buildable_to then return end | ||||
| 		end | ||||
| 		if minetest.is_protected(pos, plname) then return end | ||||
| 		local fdir = minetest.dir_to_facedir(placer:get_look_dir()) | ||||
| 		minetest.set_node(pos, { | ||||
| 			name = "homedecor:book_"..color, | ||||
| 			param2 = fdir, | ||||
| 		}) | ||||
| 		local text = itemstack:get_metadata() or "" | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("text", text) | ||||
| 		local data = minetest.deserialize(text) or {} | ||||
| 		if data.title and data.title ~= "" then | ||||
| 			meta:set_string("infotext", data.title) | ||||
| 		end | ||||
| 		if not minetest.setting_getbool("creative_mode") then | ||||
| 			itemstack:take_item() | ||||
| 		end | ||||
| 		return itemstack | ||||
| 	end, | ||||
| 	on_dig = book_dig, | ||||
| 	on_use = function(itemstack, user, pointed_thing) | ||||
| 		local player_name = user:get_player_name() | ||||
| 		local data = minetest.deserialize(itemstack:get_metadata()) | ||||
| 		local title, text, owner = "", "", player_name | ||||
| 		if data then | ||||
| 			title, text, owner = data.title, data.text, data.owner | ||||
| 		end | ||||
| 		local formspec | ||||
| 		if owner == player_name then | ||||
| 			formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img.. | ||||
| 				"field[0.5,1;7.5,0;title;Book title :;".. | ||||
| 					minetest.formspec_escape(title).."]".. | ||||
| 				"textarea[0.5,1.5;7.5,7;text;Book content :;".. | ||||
| 					minetest.formspec_escape(text).."]".. | ||||
| 				"button_exit[2.5,7.5;3,1;save;Save]" | ||||
| 		else | ||||
| 			formspec = "size[8,8]"..default.gui_bg.. | ||||
| 			"button_exit[7,0.25;1,0.5;close;X]".. | ||||
| 			default.gui_bg_img.. | ||||
| 				"label[0.5,0.5;by "..owner.."]".. | ||||
| 				"label[0.5,0;"..minetest.formspec_escape(title).."]".. | ||||
| 				"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]" | ||||
| 		end | ||||
| 		minetest.show_formspec(user:get_player_name(), BOOK_FORMNAME, formspec) | ||||
| 	end, | ||||
| 	selection_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25} | ||||
| 	}, | ||||
| 	collision_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.15, -0.5, -0.25, 0.15, -0.35, 0.25} | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("book_open_"..color, { | ||||
| 	mesh = "homedecor_book_open.obj", | ||||
| 	tiles = { "homedecor_book_open_"..color..".png" }, | ||||
| 	groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 }, | ||||
| 	drop = "homedecor:book_"..color, | ||||
| 	on_dig = book_dig, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		local fdir = node.param2 | ||||
| 		minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir }) | ||||
| 		minetest.sound_play("homedecor_book_close", { | ||||
| 			pos=pos, | ||||
| 			max_hear_distance = 3, | ||||
| 			gain = 2, | ||||
| 			}) | ||||
| 	end, | ||||
| 	selection_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25} | ||||
| 	}, | ||||
| 	collision_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25} | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| end | ||||
|  | ||||
| minetest.register_on_player_receive_fields(function(player, form_name, fields) | ||||
| 	if form_name ~= BOOK_FORMNAME or not fields.save then | ||||
| 		return | ||||
| 	end | ||||
| 	local stack = player:get_wielded_item() | ||||
| 	if minetest.get_item_group(stack:get_name(), "book") == 0 then | ||||
| 		return | ||||
| 	end | ||||
| 	local data = minetest.deserialize(stack:get_metadata()) or {} | ||||
| 	data.title, data.text, data.owner = | ||||
| 		fields.title, fields.text, player:get_player_name() | ||||
| 	stack:set_metadata(minetest.serialize(data)) | ||||
| 	player:set_wielded_item(stack) | ||||
| 	minetest.log("action", player:get_player_name().." has written in a book (title: \""..fields.title.."\"): \""..fields.text.. | ||||
| 		"\" at location: "..minetest.pos_to_string(player:getpos())) | ||||
| end) | ||||
							
								
								
									
										560
									
								
								homedecor/exterior.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										560
									
								
								homedecor/exterior.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,560 @@ | ||||
| local S = homedecor.gettext | ||||
| dofile(homedecor.modpath.."/furniture.lua") | ||||
|  | ||||
| homedecor.register("barbecue", { | ||||
| 	description = "Barbecue", | ||||
| 	tiles = { | ||||
| 		{name="homedecor_barbecue_top.png", animation={type="vertical_frames", | ||||
| 		aspect_w=16, aspect_h=16, length=2}}, | ||||
| 		"forniture_black_metal.png", | ||||
| 	}, | ||||
| 	groups = { snappy=3 }, | ||||
| 	light_source = 9, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, 0.25, -0.4375, 0.0625, 0.3125}, -- NodeBox1 | ||||
| 			{0.4375, -0.5, 0.25, 0.5, 0.0625, 0.3125}, -- NodeBox2 | ||||
| 			{-0.5, -0.5, -0.3125, -0.4375, 0.0625, -0.25}, -- NodeBox3 | ||||
| 			{0.4375, -0.5, -0.3125, 0.5, 0.0625, -0.25}, -- NodeBox4 | ||||
| 			{-0.5, 0.0625, -0.3125, 0.5, 0.375, 0.3125}, -- NodeBox5 | ||||
| 			{-0.375, 0.5, -0.25, -0.313, 0.5, 0.251}, -- NodeBox6 | ||||
| 			{-0.25, 0.5, -0.25, -0.188, 0.5, 0.251}, -- NodeBox7 | ||||
| 			{-0.125, 0.5, -0.25, -0.063, 0.5, 0.251}, -- NodeBox8 | ||||
| 			{0, 0.5, -0.25, 0.062, 0.5, 0.251}, -- NodeBox9 | ||||
| 			{0.125, 0.5, -0.25, 0.187, 0.5, 0.251}, -- NodeBox10 | ||||
| 			{0.25, 0.5, -0.25, 0.312, 0.5, 0.251}, -- NodeBox11 | ||||
| 			{0.375, 0.5, -0.25, 0.437, 0.5, 0.251}, -- NodeBox12 | ||||
| 			{-0.5, 0.375, 0.251, 0.5, 0.5, 0.3125}, -- NodeBox13 | ||||
| 			{-0.5, 0.0625, -0.3125, 0.5, 0.5, -0.25}, -- NodeBox14 | ||||
| 			{-0.5, 0.0625, -0.3125, -0.438, 0.5, 0.3125}, -- NodeBox15 | ||||
| 			{0.4375, 0.0625, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox16 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.5, -0.5, -0.3125, 0.5, 0.625, 0.3125 } | ||||
|         }, | ||||
| 	expand = { top="homedecor:barbecue_meat" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("barbecue_meat", { | ||||
| 	tiles = { | ||||
| 		"homedecor_barbecue_meat.png", | ||||
| 	}, | ||||
| 	groups = { snappy=3, not_in_creative_inventory=1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.25, -0.5, -0.125, -0.0625, -0.4375, 0.125}, -- NodeBox1 | ||||
| 			{0.125, -0.5, -0.125, 0.3125, -0.4375, 0.125}, -- NodeBox2 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| homedecor.register("bench_large_1_left", { | ||||
| 	description = "Garden Bench (style 1)", | ||||
| 	tiles = { | ||||
| 		"homedecor_bench_large_1_left_top.png", | ||||
| 		"homedecor_bench_large_1_left_bottom.png", | ||||
| 		"homedecor_bench_large_1_ends.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_ends.png", | ||||
| 		"homedecor_bench_large_1_left_back.png", | ||||
| 		"homedecor_bench_large_1_left_front.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_bench_large_1_inv.png", | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, 0.25, 0.375, 0.5, 0.4375, 0.4375}, -- NodeBox1 | ||||
| 			{-0.5, 0, 0.375, 0.5, 0.1875, 0.4375}, -- NodeBox2 | ||||
| 			{-0.5, -0.125, 0.115, 0.5, -0.0625, 0.35}, -- NodeBox3 | ||||
| 			{-0.5, -0.125, -0.0872, 0.5, -0.0625, 0.079}, -- NodeBox4 | ||||
| 			{-0.3125, -0.5, 0.4375, -0.25, 0.375, 0.5}, -- NodeBox5 | ||||
| 			{-0.3125, -0.25, -0.0625, -0.25, -0.125, 0.4375}, -- NodeBox6 | ||||
| 			{-0.3125, -0.5, -0.0625, -0.25, -0.25, 0}, -- NodeBox7 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.5, -0.5, -0.09375, 1.5, 0.5, 0.5 } | ||||
| 	}, | ||||
| 	expand = { right="homedecor:bench_large_1_right" }, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		pos.y = pos.y-0 -- player's sit position. | ||||
| 		sit_exec(pos, node, clicker) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("bench_large_1_right", { | ||||
| 	tiles = { | ||||
| 		"homedecor_bench_large_1_left_top.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_left_bottom.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_ends.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_ends.png", | ||||
| 		"homedecor_bench_large_1_left_back.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_left_front.png^[transformFX" | ||||
| 	}, | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, 0.25, 0.375, 0.5, 0.4375, 0.4375}, -- NodeBox1 | ||||
| 			{-0.5, 0, 0.375, 0.5, 0.1875, 0.4375}, -- NodeBox2 | ||||
| 			{-0.5, -0.125, 0.115, 0.5, -0.0625, 0.35}, -- NodeBox3 | ||||
| 			{-0.5, -0.125, -0.0872, 0.5, -0.0625, 0.079}, -- NodeBox4 | ||||
| 			{0.25, -0.5, 0.4375, 0.3125, 0.375, 0.5}, -- NodeBox5 | ||||
| 			{0.25, -0.25, -0.0625, 0.3125, -0.125, 0.5}, -- NodeBox6 | ||||
| 			{0.25, -0.5, -0.0625, 0.3125, -0.25, 0}, -- NodeBox7 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| }) | ||||
|  | ||||
|  | ||||
| homedecor.register("bench_large_2_left", { | ||||
| 	description = "Garden Bench (style 2)", | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_bench_large_2_left_back.png", | ||||
| 		"homedecor_bench_large_2_left_back.png^[transformFX" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_bench_large_2_inv.png", | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, 0.375, -0.375, 0.5, 0.5}, -- NodeBox1 | ||||
| 			{-0.375, 0.3125, 0.4375, 0.5, 0.4375, 0.5}, -- NodeBox2 | ||||
| 			{-0.375, -0.0625, 0.4375, 0.5, 0.0625, 0.5}, -- NodeBox3 | ||||
| 			{-0.3125, 0.0625, 0.45, -0.25, 0.3125, 0.48}, -- NodeBox4 | ||||
| 			{-0.1875, 0.0625, 0.45, -0.125, 0.3125, 0.48}, -- NodeBox5 | ||||
| 			{-0.0625, 0.0625, 0.45, 0, 0.3125, 0.48}, -- NodeBox6 | ||||
| 			{0.0625, 0.0625, 0.45, 0.125, 0.3125, 0.48}, -- NodeBox7 | ||||
| 			{0.1875, 0.0625, 0.45, 0.25, 0.3125, 0.48}, -- NodeBox8 | ||||
| 			{0.3125, 0.0625, 0.45, 0.375, 0.3125, 0.48}, -- NodeBox9 | ||||
| 			{0.4375, 0.0625, 0.45, 0.5, 0.3125, 0.48}, -- NodeBox10 | ||||
| 			{-0.5, 0.0625, -0.145362, -0.375, 0.125, 0.375}, -- NodeBox11 | ||||
| 			{-0.5, -0.5, -0.0625, -0.375, 0.0625, 0.0625}, -- NodeBox12 | ||||
| 			{-0.4375, -0.125, -0.0625, 0.5, -0.0911603, 0.4375}, -- NodeBox13 | ||||
| 			{-0.4375, -0.4375, 0.0625, -0.375, -0.3125, 0.375}, -- NodeBox14 | ||||
| 			{-0.375, -0.342324, 0.25, 0.5, -0.4375, 0.1875}, -- NodeBox15 | ||||
| 			{-0.5, -0.25, -0.0290173, 0.5, -0.125, 0.0125346}, -- NodeBox16 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.5, -0.5, -0.15625, 1.5, 0.5, 0.5 } | ||||
| 	}, | ||||
| 	expand = { right="homedecor:bench_large_2_right" }, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		pos.y = pos.y-0 -- player's sit position. | ||||
| 		sit_exec(pos, node, clicker) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("bench_large_2_right", { | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_bench_large_2_right_back.png", | ||||
| 		"homedecor_bench_large_2_right_back.png^[transformFX" | ||||
| 	}, | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{0.375, -0.5, 0.375, 0.5, 0.5, 0.5}, -- NodeBox1 | ||||
| 			{-0.5, 0.3125, 0.4375, 0.375, 0.4375, 0.5}, -- NodeBox2 | ||||
| 			{-0.5, -0.0625, 0.4375, 0.375, 0.0625, 0.5}, -- NodeBox3 | ||||
| 			{-0.5, 0.0625, 0.45, -0.4375, 0.3125, 0.48}, -- NodeBox4 | ||||
| 			{-0.375, 0.0625, 0.45, -0.3125, 0.3125, 0.48}, -- NodeBox5 | ||||
| 			{-0.25, 0.0625, 0.45, -0.1875, 0.3125, 0.48}, -- NodeBox6 | ||||
| 			{-0.125, 0.0625, 0.45, -0.0625, 0.3125, 0.48}, -- NodeBox7 | ||||
| 			{0, 0.0625, 0.45, 0.0625, 0.3125, 0.48}, -- NodeBox8 | ||||
| 			{0.125, 0.0625, 0.45, 0.1875, 0.3125, 0.48}, -- NodeBox9 | ||||
| 			{0.25, 0.0625, 0.45, 0.3125, 0.3125, 0.48}, -- NodeBox10 | ||||
| 			{0.375, 0.0625, -0.145362, 0.5, 0.125, 0.375}, -- NodeBox11 | ||||
| 			{0.375, -0.5, -0.0625, 0.5, 0.125, 0.0625}, -- NodeBox12 | ||||
| 			{0.375, -0.4375, 0.0625, 0.4375, -0.3125, 0.375}, -- NodeBox13 | ||||
| 			{-0.5, -0.4375, 0.1875, 0.375, -0.342324, 0.25}, -- NodeBox14 | ||||
| 			{-0.5, -0.125, -0.0625, 0.4375, -0.0911603, 0.4375}, -- NodeBox15 | ||||
| 			{-0.5, -0.25, -0.0290173, 0.5, -0.125, 0.0125346}, -- NodeBox16 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| }) | ||||
|  | ||||
| homedecor.register("deckchair_head", { | ||||
| 	tiles = { | ||||
| 		"homedecor_deckchair_top_c1.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png^[transformFX", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_front.png" | ||||
| 	}, | ||||
| 	groups = { snappy = 3, not_in_creative_inventory = 1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.375, -0.3125, -0.0625, 0.375, -0.25, 0}, -- NodeBox1 | ||||
| 			{-0.375, -0.25, 0, 0.375, -0.1875, 0.0625}, -- NodeBox2 | ||||
| 			{-0.375, -0.1875, 0.0625, 0.375, -0.125, 0.125}, -- NodeBox3 | ||||
| 			{-0.375, -0.125, 0.125, 0.375, -0.0625, 0.1875}, -- NodeBox4 | ||||
| 			{-0.375, -0.0625, 0.1875, 0.375, 0, 0.25}, -- NodeBox5 | ||||
| 			{-0.375, 0, 0.25, 0.375, 0.0625, 0.3125}, -- NodeBox6 | ||||
| 			{-0.375, 0.0625, 0.3125, 0.375, 0.125, 0.375}, -- NodeBox7 | ||||
| 			{-0.375, 0.125, 0.375, 0.375, 0.1875, 0.4375}, -- NodeBox8 | ||||
| 			{-0.375, 0.1875, 0.4375, 0.375, 0.25, 0.5}, -- NodeBox9 | ||||
| 			{-0.375, -0.375, -0.5, 0.375, -0.3125, 0.0625}, -- NodeBox10 | ||||
| 			{0.3125, -0.1875, -0.5, 0.4375, -0.1575, 0.0625}, -- NodeBox11 | ||||
| 			{-0.4375, -0.1875, -0.5, -0.3125, -0.1575, 0.0625}, -- NodeBox12 | ||||
| 			{0.3125, -0.5, 0, 0.375, -0.25, 0.0625}, -- NodeBox13 | ||||
| 			{-0.375, -0.5, 0, -0.3125, -0.25, 0.0625}, -- NodeBox14 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| homedecor.register("deckchair_foot", { | ||||
| 	tiles = { | ||||
| 		"homedecor_deckchair_top_c2.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png^[transformFX", | ||||
| 		"homedecor_deckchair_front.png" | ||||
| 	}, | ||||
| 	description = "Deck chair", | ||||
| 	inventory_image = "homedecor_deckchair_inv.png", | ||||
| 	groups = { snappy = 3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.375, -0.375, -0.5, 0.375, -0.3125, 0.5}, -- NodeBox1 | ||||
| 			{0.3125, -0.5, -0.5, 0.375, -0.375, -0.4375}, -- NodeBox2 | ||||
| 			{-0.375, -0.5, -0.5, -0.3125, -0.375, -0.4375}, -- NodeBox3 | ||||
| 			{0.3125, -0.1875, 0.3, 0.4375, -0.1575, 0.5}, -- NodeBox4 | ||||
| 			{-0.4375, -0.1875, 0.3, -0.3125, -0.1575, 0.5}, -- NodeBox5 | ||||
| 			{-0.365, -0.3125, 0.32, -0.3225, -0.1875, 0.4375}, -- NodeBox6 | ||||
| 			{0.3225, -0.3125, 0.32, 0.365, -0.1875, 0.4375}, -- NodeBox7 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.45, -0.5, -0.5, 0.45, 0.35, 1.5 } | ||||
| 	}, | ||||
| 	expand = { forward="homedecor:deckchair_head" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("doghouse_base", { | ||||
| 	tiles = { | ||||
| 		"homedecor_doghouse_base_top.png", | ||||
| 		"homedecor_doghouse_base_bottom.png", | ||||
| 		"homedecor_doghouse_base_side.png", | ||||
| 		"homedecor_doghouse_base_side.png", | ||||
| 		"homedecor_doghouse_base_side.png", | ||||
| 		"homedecor_doghouse_base_front.png" | ||||
| 	}, | ||||
| 	description = "Doghouse", | ||||
| 	inventory_image = "homedecor_doghouse_inv.png", | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{0.3125, -0.5, -0.4375, 0.4375, -0.3125, -0.3125}, -- NodeBox1 | ||||
| 			{0.3125, -0.5, 0.3125, 0.4375, -0.3125, 0.4375}, -- NodeBox2 | ||||
| 			{-0.4375, -0.5, 0.3125, -0.3125, -0.3125, 0.4375}, -- NodeBox3 | ||||
| 			{-0.4375, -0.5, -0.4375, -0.3125, -0.3125, -0.3125}, -- NodeBox4 | ||||
| 			{-0.4375, -0.3125, -0.4375, -0.375, 0.5, 0.4375}, -- NodeBox5 | ||||
| 			{-0.4375, 0.3125, -0.375, 0.4375, 0.5, -0.3125}, -- NodeBox6 | ||||
| 			{-0.4375, -0.3125, -0.4375, 0.4375, -0.25, 0.4375}, -- NodeBox7 | ||||
| 			{-0.375, -0.3125, -0.375, -0.1875, 0.4375, -0.3125}, -- NodeBox8 | ||||
| 			{0.1875, -0.3125, -0.375, 0.4375, 0.5, -0.3125}, -- NodeBox9 | ||||
| 			{0.375, -0.25, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox10 | ||||
| 			{-0.4375, -0.3125, 0.375, 0.4375, 0.5, 0.4375}, -- NodeBox11 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.slab_y(1.5), | ||||
| 	groups = {snappy=3}, | ||||
| 	expand = { top="homedecor:doghouse_roof" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("doghouse_roof", { | ||||
| 	tiles = { | ||||
| 		"homedecor_doghouse_roof_top.png", | ||||
| 		"homedecor_doghouse_roof_bottom.png", | ||||
| 		"homedecor_doghouse_roof_side.png", | ||||
| 		"homedecor_doghouse_roof_side.png", | ||||
| 		"homedecor_doghouse_roof_front.png", | ||||
| 		"homedecor_doghouse_roof_front.png" | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, -0.5, -0.4375, -0.4375, 0.5}, -- NodeBox17 | ||||
| 			{-0.4375, -0.4375, -0.5, -0.375, -0.375, 0.5}, -- NodeBox18 | ||||
| 			{-0.375, -0.375, -0.5, -0.3125, -0.3125, 0.5}, -- NodeBox19 | ||||
| 			{-0.3125, -0.3125, -0.5, -0.25, -0.25, 0.5}, -- NodeBox20 | ||||
| 			{-0.25, -0.25, -0.5, -0.1875, -0.1875, 0.5}, -- NodeBox21 | ||||
| 			{-0.1875, -0.1875, -0.5, -0.125, -0.125, 0.5}, -- NodeBox22 | ||||
| 			{-0.125, -0.125, -0.5, -0.0625, -0.0625, 0.5}, -- NodeBox23 | ||||
| 			{-0.0625, -0.0625, -0.5, 0.0625, 0, 0.5}, -- NodeBox24 | ||||
| 			{0.0625, -0.125, -0.5, 0.125, -0.0625, 0.5}, -- NodeBox25 | ||||
| 			{0.125, -0.1875, -0.5, 0.1875, -0.125, 0.5}, -- NodeBox26 | ||||
| 			{0.1875, -0.25, -0.5, 0.25, -0.1875, 0.5}, -- NodeBox27 | ||||
| 			{0.25, -0.3125, -0.5, 0.3125, -0.25, 0.5}, -- NodeBox28 | ||||
| 			{0.3125, -0.375, -0.5, 0.375, -0.3125, 0.5}, -- NodeBox29 | ||||
| 			{0.375, -0.4375, -0.5, 0.4375, -0.375, 0.5}, -- NodeBox30 | ||||
| 			{0.4375, -0.5, -0.5, 0.5, -0.4375, 0.5}, -- NodeBox31 | ||||
| 			{-0.4375, -0.5, -0.375, 0.4375, -0.4375, 0.4375}, -- NodeBox32 | ||||
| 			{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.4375}, -- NodeBox33 | ||||
| 			{-0.3125, -0.375, -0.375, 0.3125, -0.3125, 0.4375}, -- NodeBox34 | ||||
| 			{-0.25, -0.3125, -0.375, 0.25, -0.25, 0.4375}, -- NodeBox35 | ||||
| 			{-0.1875, -0.25, -0.375, 0.1875, -0.1875, 0.4375}, -- NodeBox36 | ||||
| 			{-0.125, -0.1875, -0.375, 0.125, -0.125, 0.4375}, -- NodeBox37 | ||||
| 			{0.0625, -0.125, -0.375, -0.0625, -0.0625, 0.4375}, -- NodeBox38 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| 	groups = {snappy=3, not_in_creative_inventory=1}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("simple_bench", { | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_bench_large_2_left_back.png", | ||||
| 		"homedecor_bench_large_2_left_back.png^[transformFX" | ||||
| 	}, | ||||
| 	description = "Simple Bench", | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { | ||||
| 			{-0.5, -0.15, 0,  0.5,  -0.05, 0.4}, | ||||
| 			{-0.4, -0.5,  0.1, -0.3, -0.15, 0.3}, | ||||
| 			{ 0.3, -0.5,  0.1,  0.4, -0.15, 0.3}, | ||||
| 			} | ||||
| 	}, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		pos.y = pos.y-0 -- player's sit position. | ||||
| 		sit_exec(pos, node, clicker) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("stonepath", { | ||||
| 	description = "Garden stone path", | ||||
| 	tiles = { | ||||
| 		"default_stone.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_stonepath_inv.png", | ||||
| 	groups = { snappy=3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.4375, -0.5, 0.3125, -0.3125, -0.48, 0.4375}, -- NodeBox1 | ||||
| 			{-0.25, -0.5, 0.125, 0, -0.48, 0.375}, -- NodeBox2 | ||||
| 			{0.125, -0.5, 0.125, 0.4375, -0.48, 0.4375}, -- NodeBox3 | ||||
| 			{-0.4375, -0.5, -0.125, -0.25, -0.48, 0.0625}, -- NodeBox4 | ||||
| 			{-0.0625, -0.5, -0.25, 0.25, -0.48, 0.0625}, -- NodeBox5 | ||||
| 			{0.3125, -0.5, -0.25, 0.4375, -0.48, -0.125}, -- NodeBox6 | ||||
| 			{-0.3125, -0.5, -0.375, -0.125, -0.48, -0.1875}, -- NodeBox7 | ||||
| 			{0.125, -0.5, -0.4375, 0.25, -0.48, -0.3125}, -- NodeBox8 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.4375, -0.5, -0.4375, 0.4375, -0.4, 0.4375 } | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| homedecor.register("swing", { | ||||
| 	description = "Tree's swing", | ||||
| 	tiles = { | ||||
| 		"homedecor_swing_top.png", | ||||
| 		"homedecor_swing_top.png^[transformR180", | ||||
| 		"homedecor_swing_top.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_swing_inv.png", | ||||
| 	groups = { snappy=3, oddly_breakable_by_hand=3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, 0.33, -0.125,  0.3125, 0.376, 0.1875}, -- NodeBox1 | ||||
| 			{-0.3125, 0.376, 0.025, -0.3,    0.5,   0.0375}, -- NodeBox2 | ||||
| 			{ 0.3,    0.376, 0.025,  0.3125, 0.5,   0.0375}, -- NodeBox3 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.3125, 0.33, -0.125, 0.3125, 0.5, 0.1875 } | ||||
| 	}, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		isceiling, pos = homedecor.find_ceiling(itemstack, placer, pointed_thing) | ||||
| 		if isceiling then | ||||
| 			local height = 0 | ||||
|  | ||||
| 			for i = 0, 4 do	-- search up to 5 spaces downward from the ceiling for the first non-buildable-to node... | ||||
| 				height = i | ||||
| 				local testpos = { x=pos.x, y=pos.y-i-1, z=pos.z } | ||||
| 				local testnode = minetest.get_node(testpos) | ||||
| 				local testreg = core.registered_nodes[testnode.name] | ||||
|  | ||||
| 				if not testreg.buildable_to then | ||||
| 					if i < 1 then | ||||
| 						minetest.chat_send_player(placer:get_player_name(), "No room under there to hang a swing.") | ||||
| 						return | ||||
| 					else | ||||
| 						break | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
|  | ||||
| 			for j = 0, height do -- then fill that space with ropes... | ||||
| 				local testpos = { x=pos.x, y=pos.y-j, z=pos.z } | ||||
| 				local testnode = minetest.get_node(testpos) | ||||
| 				local testreg = core.registered_nodes[testnode.name] | ||||
| 				minetest.set_node(testpos, { name = "homedecor:swing_rope", param2 = fdir }) | ||||
| 			end | ||||
|  | ||||
| 			minetest.set_node({ x=pos.x, y=pos.y-height, z=pos.z }, { name = "homedecor:swing", param2 = fdir }) | ||||
|  | ||||
| 			if not homedecor.expect_infinite_stacks then | ||||
| 				itemstack:take_item() | ||||
| 				return itemstack | ||||
| 			end | ||||
|  | ||||
| 		else | ||||
| 			minetest.chat_send_player(placer:get_player_name(), "You have to point at the bottom side of an overhanging object to place a swing.") | ||||
| 		end | ||||
| 	end, | ||||
| 	after_dig_node = function(pos, oldnode, oldmetadata, digger) | ||||
| 		for i = 0, 4 do | ||||
| 			local testpos = { x=pos.x, y=pos.y+i+1, z=pos.z } | ||||
| 			if minetest.get_node(testpos).name == "homedecor:swing_rope" then | ||||
| 				minetest.remove_node(testpos) | ||||
| 			else | ||||
| 				return | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| homedecor.register("swing_rope", { | ||||
| 	tiles = { | ||||
| 		"homedecor_swingrope_sides.png" | ||||
| 	}, | ||||
| 	groups = { not_in_creative_inventory=1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, -0.5, 0.025, -0.3, 0.5, 0.0375}, -- NodeBox1 | ||||
| 			{0.3, -0.5, 0.025, 0.3125, 0.5, 0.0375}, -- NodeBox2 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| homedecor.register("well_base", { | ||||
| 	tiles = { | ||||
| 		"homedecor_well_base_top.png", | ||||
| 		"default_cobble.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_well_inv.png", | ||||
| 	description = "Water well", | ||||
| 	groups = { snappy = 3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, -0.5, -0.4375, 0.3125, 0.5, -0.3125}, -- NodeBox1 | ||||
| 			{0.3125, -0.5, -0.3125, 0.4375, 0.5, 0.3125}, -- NodeBox2 | ||||
| 			{-0.4375, -0.5, -0.3125, -0.3125, 0.5, 0.3125}, -- NodeBox3 | ||||
| 			{-0.3125, -0.5, 0.3125, 0.3125, 0.5, 0.4375}, -- NodeBox4 | ||||
| 			{0.25, -0.5, -0.375, 0.375, 0.5, -0.25}, -- NodeBox5 | ||||
| 			{0.25, -0.5, 0.25, 0.375, 0.5, 0.375}, -- NodeBox6 | ||||
| 			{-0.375, -0.5, -0.375, -0.25, 0.5, -0.25}, -- NodeBox7 | ||||
| 			{-0.375, -0.5, 0.25, -0.25, 0.5, 0.375}, -- NodeBox8 | ||||
| 			{-0.3125, -0.5, -0.5, 0.3125, -0.3125, -0.4375}, -- NodeBox9 | ||||
| 			{0.4375, -0.5, -0.3125, 0.5, -0.3125, 0.3125}, -- NodeBox10 | ||||
| 			{-0.3125, -0.5, 0.4375, 0.3125, -0.3125, 0.5}, -- NodeBox11 | ||||
| 			{-0.5, -0.5, -0.3125, -0.4375, -0.3125, 0.3125}, -- NodeBox12 | ||||
| 			{0.3125, -0.5, -0.4375, 0.4375, -0.3125, -0.3125}, -- NodeBox13 | ||||
| 			{0.3125, -0.5, 0.3125, 0.4375, -0.3125, 0.4375}, -- NodeBox14 | ||||
| 			{-0.4375, -0.5, 0.3125, -0.3125, -0.3125, 0.4375}, -- NodeBox15 | ||||
| 			{-0.4375, -0.5, -0.4375, -0.3125, -0.3125, -0.3125}, -- NodeBox16 | ||||
| 			{-0.3125, -0.5, -0.3125, 0.3125, 0, 0.3125}, -- NodeBox17 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.slab_y(2), | ||||
| 	expand = { top="homedecor:well_top" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("well_top", { | ||||
| 	tiles = { | ||||
| 		"homedecor_well_roof_top.png", | ||||
| 		"homedecor_well_roof_wood.png", | ||||
| 		"homedecor_well_roof_side3.png", | ||||
| 		"homedecor_well_roof_side3.png", | ||||
| 		"homedecor_well_roof_side2.png", | ||||
| 		"homedecor_well_roof_side1.png" | ||||
| 	}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.0625, -0.5, 0.375, 0.0625, 0.4375, 0.4375}, -- NodeBox1 | ||||
| 			{-0.0625, -0.5, -0.4375, 0.0625, 0.4375, -0.375}, -- NodeBox2 | ||||
| 			{-0.125, 0.375, -0.5, 0.125, 0.4375, 0.5}, -- NodeBox3 | ||||
| 			{0.125, 0.3125, -0.5, 0.1875, 0.375, 0.5}, -- NodeBox4 | ||||
| 			{-0.1875, 0.3125, -0.5, -0.125, 0.375, 0.5}, -- NodeBox5 | ||||
| 			{0.1875, 0.25, -0.5, 0.25, 0.3125, 0.5}, -- NodeBox6 | ||||
| 			{-0.25, 0.25, -0.5, -0.1875, 0.3125, 0.5}, -- NodeBox7 | ||||
| 			{0.25, 0.1875, -0.5, 0.3125, 0.25, 0.5}, -- NodeBox8 | ||||
| 			{-0.3125, 0.1875, -0.5, -0.25, 0.25, 0.5}, -- NodeBox9 | ||||
| 			{0.3125, 0.125, -0.5, 0.375, 0.1875, 0.5}, -- NodeBox10 | ||||
| 			{-0.375, 0.125, -0.5, -0.3125, 0.1875, 0.5}, -- NodeBox11 | ||||
| 			{0.375, 0.0625, -0.5, 0.4375, 0.125, 0.5}, -- NodeBox12 | ||||
| 			{-0.375, 0.0625, -0.5, -0.4375, 0.125, 0.5}, -- NodeBox13 | ||||
| 			{0.4375, 0, -0.5, 0.5, 0.0625, 0.5}, -- NodeBox14 | ||||
| 			{-0.5, 0, -0.5, -0.4375, 0.0625, 0.5}, -- NodeBox15 | ||||
| 			{-0.0625, 0.4375, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox16 | ||||
| 			{-0.125, 0.125, -0.4375, 0.125, 0.1875, -0.375}, -- NodeBox17 | ||||
| 			{0.125, 0.1875, -0.4375, 0.1875, 0.25, -0.375}, -- NodeBox18 | ||||
| 			{-0.1875, 0.1875, -0.4375, -0.125, 0.25, -0.375}, -- NodeBox19 | ||||
| 			{-0.125, 0.125, 0.375, 0.125, 0.1875, 0.4375}, -- NodeBox20 | ||||
| 			{0.125, 0.1875, 0.375, 0.1875, 0.25, 0.4375}, -- NodeBox21 | ||||
| 			{-0.1875, 0.1875, 0.375, -0.125, 0.25, 0.4375}, -- NodeBox22 | ||||
| 			{-0.0165975, -0.159751, -0.375, 0.0165974, -0.125, 0.375}, -- NodeBox23 | ||||
| 			{-0.00414942, -0.465, -0.008299, 0.008299, -0.159751, 0.004149}, -- NodeBox24 | ||||
| 			{-0.0625, -0.0625, -0.5, 0.0625, 0, -0.4646}, -- NodeBox25 | ||||
| 			{0.0625, -0.125, -0.5, 0.125, -0.0625, -0.4646}, -- NodeBox26 | ||||
| 			{0.125, -0.25, -0.5, 0.1875, -0.125, -0.4646}, -- NodeBox27 | ||||
| 			{0.0625, -0.3125, -0.5, 0.125, -0.25, -0.4646}, -- NodeBox28 | ||||
| 			{-0.0625, -0.375, -0.5, 0.0625, -0.3125, -0.4646}, -- NodeBox29 | ||||
| 			{-0.0625, -0.3125, -0.5, -0.125, -0.25, -0.4646}, -- NodeBox30 | ||||
| 			{-0.1875, -0.25, -0.5, -0.125, -0.125, -0.4646}, -- NodeBox31 | ||||
| 			{-0.125, -0.125, -0.5, -0.0625, -0.0625, -0.4646}, -- NodeBox32 | ||||
| 			{-0.016598, -0.3125, -0.48, 0.020747, -0.0625, -0.49}, -- NodeBox33 | ||||
| 			{-0.125, -0.209544, -0.48, 0.125, -0.172199, -0.49}, -- NodeBox34 | ||||
| 			{-0.0165975, -0.200, -0.477178, 0.020747, -0.175349, -0.435685}, -- NodeBox35 | ||||
| 			{0.1, -0.75, -0.125, 0.125, -0.5, 0.125}, -- NodeBox36 | ||||
| 			{-0.125, -0.75, -0.125, -0.1, -0.5, 0.125}, -- NodeBox37 | ||||
| 			{-0.125, -0.75, -0.125, 0.125, -0.729253, 0.125}, -- NodeBox38 | ||||
| 			{-0.125, -0.75, -0.125, 0.125, -0.5, -0.1}, -- NodeBox39 | ||||
| 			{-0.125, -0.75, 0.1, 0.125, -0.5, 0.125}, -- NodeBox40 | ||||
| 			{-0.0165975,-0.465, -0.125, 0.0165974, -0.451245, 0.125}, -- NodeBox41 | ||||
| 			{-0.0165975, -0.51, 0.112033, 0.0165974, -0.46, 0.125}, -- NodeBox42 | ||||
| 			{-0.0165975, -0.51, -0.125, 0.0165974, -0.46, -0.112033}, -- NodeBox43 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| }) | ||||
| @@ -1,6 +1,44 @@ | ||||
| local S = homedecor.gettext | ||||
|  | ||||
| -- 3dforniture tables ... well, they used to be :P | ||||
| function sit(pos, node, clicker) | ||||
| 	local name = clicker:get_player_name() | ||||
| 	local meta = minetest:get_meta(pos) | ||||
| 	local param2 = node.param2 | ||||
| 	if clicker:get_player_name() == meta:get_string("player") then | ||||
| 		meta:set_string("player", "") | ||||
| 		pos.y = pos.y-0.5 | ||||
| 		clicker:setpos(pos) | ||||
| 		clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0}) | ||||
| 		clicker:set_physics_override(1, 1, 1) | ||||
| 		default.player_attached[name] = false | ||||
| 		default.player_set_animation(clicker, "stand", 30) | ||||
| 	else | ||||
| 		meta:set_string("player", clicker:get_player_name()) | ||||
| 		clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0}) | ||||
| 		clicker:set_physics_override(0, 0, 0) | ||||
| 		default.player_attached[name] = true | ||||
| 		if param2 == 1 then | ||||
| 			clicker:set_look_yaw(7.9) | ||||
| 		elseif param2 == 3 then | ||||
| 			clicker:set_look_yaw(4.75) | ||||
| 		elseif param2 == 0 then | ||||
| 			clicker:set_look_yaw(3.15) | ||||
| 		else | ||||
| 			clicker:set_look_yaw(6.28) | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| function sit_exec(pos, node, clicker) -- don't move these functions inside sit() | ||||
| 	if not clicker or not clicker:is_player() | ||||
| 		or clicker:get_player_control().up == true or clicker:get_player_control().down == true | ||||
| 		or clicker:get_player_control().left == true or clicker:get_player_control().right == true | ||||
| 		or clicker:get_player_control().jump == true then  -- make sure that the player is immobile. | ||||
| 	return end | ||||
| 	sit(pos, node, clicker) | ||||
| 	clicker:setpos(pos) | ||||
| 	default.player_set_animation(clicker, "sit", 30) | ||||
| end | ||||
|  | ||||
| local table_colors = { "", "mahogany", "white" } | ||||
|  | ||||
| @@ -34,46 +72,6 @@ for _, i in ipairs(table_colors) do | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| local function sit(pos, node, clicker) | ||||
| 	local name = clicker:get_player_name() | ||||
| 	local meta = minetest:get_meta(pos) | ||||
| 	local param2 = node.param2 | ||||
| 	if clicker:get_player_name() == meta:get_string("player") then | ||||
| 		meta:set_string("player", "") | ||||
| 		pos.y = pos.y-0.5 | ||||
| 		clicker:setpos(pos) | ||||
| 		clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0}) | ||||
| 		clicker:set_physics_override(1, 1, 1) | ||||
| 		default.player_attached[name] = false | ||||
| 		default.player_set_animation(clicker, "stand", 30) | ||||
| 	else | ||||
| 		meta:set_string("player", clicker:get_player_name()) | ||||
| 		clicker:set_eye_offset({x=0,y=-7,z=2}, {x=0,y=0,z=0}) | ||||
| 		clicker:set_physics_override(0, 0, 0) | ||||
| 		default.player_attached[name] = true | ||||
| 		if param2 == 1 then | ||||
| 			clicker:set_look_yaw(7.9) | ||||
| 		elseif param2 == 3 then | ||||
| 			clicker:set_look_yaw(4.75) | ||||
| 		elseif param2 == 0 then | ||||
| 			clicker:set_look_yaw(3.15) | ||||
| 		else | ||||
| 			clicker:set_look_yaw(6.28) | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local function sit_exec(pos, node, clicker) -- don't move these functions inside sit() | ||||
| 	if not clicker or not clicker:is_player() | ||||
| 		or clicker:get_player_control().up == true or clicker:get_player_control().down == true | ||||
| 		or clicker:get_player_control().left == true or clicker:get_player_control().right == true | ||||
| 		or clicker:get_player_control().jump == true then  -- make sure that the player is immobile. | ||||
| 	return end | ||||
| 	sit(pos, node, clicker) | ||||
| 	clicker:setpos(pos) | ||||
| 	default.player_set_animation(clicker, "sit", 30) | ||||
| end | ||||
|  | ||||
| local chaircolors = { | ||||
| 	{ "", "plain" }, | ||||
| 	{ "black", "Black" }, | ||||
| @@ -385,232 +383,6 @@ homedecor.register("wardrobe_bottom", { | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("simple_bench", { | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_bench_large_2_left_back.png", | ||||
| 		"homedecor_bench_large_2_left_back.png^[transformFX" | ||||
| 	}, | ||||
| 	description = "Simple Bench", | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { | ||||
| 			{-0.5, -0.15, 0,  0.5,  -0.05, 0.4}, | ||||
| 			{-0.4, -0.5,  0.1, -0.3, -0.15, 0.3}, | ||||
| 			{ 0.3, -0.5,  0.1,  0.4, -0.15, 0.3}, | ||||
| 			} | ||||
| 	}, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		pos.y = pos.y-0 -- player's sit position. | ||||
| 		sit_exec(pos, node, clicker) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("bench_large_1_left", { | ||||
| 	description = "Garden Bench (style 1)", | ||||
| 	tiles = { | ||||
| 		"homedecor_bench_large_1_left_top.png", | ||||
| 		"homedecor_bench_large_1_left_bottom.png", | ||||
| 		"homedecor_bench_large_1_ends.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_ends.png", | ||||
| 		"homedecor_bench_large_1_left_back.png", | ||||
| 		"homedecor_bench_large_1_left_front.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_bench_large_1_inv.png", | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, 0.25, 0.375, 0.5, 0.4375, 0.4375}, -- NodeBox1 | ||||
| 			{-0.5, 0, 0.375, 0.5, 0.1875, 0.4375}, -- NodeBox2 | ||||
| 			{-0.5, -0.125, 0.115, 0.5, -0.0625, 0.35}, -- NodeBox3 | ||||
| 			{-0.5, -0.125, -0.0872, 0.5, -0.0625, 0.079}, -- NodeBox4 | ||||
| 			{-0.3125, -0.5, 0.4375, -0.25, 0.375, 0.5}, -- NodeBox5 | ||||
| 			{-0.3125, -0.25, -0.0625, -0.25, -0.125, 0.4375}, -- NodeBox6 | ||||
| 			{-0.3125, -0.5, -0.0625, -0.25, -0.25, 0}, -- NodeBox7 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.5, -0.5, -0.09375, 1.5, 0.5, 0.5 } | ||||
| 	}, | ||||
| 	expand = { right="homedecor:bench_large_1_right" }, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		pos.y = pos.y-0 -- player's sit position. | ||||
| 		sit_exec(pos, node, clicker) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("bench_large_1_right", { | ||||
| 	tiles = { | ||||
| 		"homedecor_bench_large_1_left_top.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_left_bottom.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_ends.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_ends.png", | ||||
| 		"homedecor_bench_large_1_left_back.png^[transformFX", | ||||
| 		"homedecor_bench_large_1_left_front.png^[transformFX" | ||||
| 	}, | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, 0.25, 0.375, 0.5, 0.4375, 0.4375}, -- NodeBox1 | ||||
| 			{-0.5, 0, 0.375, 0.5, 0.1875, 0.4375}, -- NodeBox2 | ||||
| 			{-0.5, -0.125, 0.115, 0.5, -0.0625, 0.35}, -- NodeBox3 | ||||
| 			{-0.5, -0.125, -0.0872, 0.5, -0.0625, 0.079}, -- NodeBox4 | ||||
| 			{0.25, -0.5, 0.4375, 0.3125, 0.375, 0.5}, -- NodeBox5 | ||||
| 			{0.25, -0.25, -0.0625, 0.3125, -0.125, 0.5}, -- NodeBox6 | ||||
| 			{0.25, -0.5, -0.0625, 0.3125, -0.25, 0}, -- NodeBox7 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| }) | ||||
|  | ||||
|  | ||||
| homedecor.register("bench_large_2_left", { | ||||
| 	description = "Garden Bench (style 2)", | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_bench_large_2_left_back.png", | ||||
| 		"homedecor_bench_large_2_left_back.png^[transformFX" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_bench_large_2_inv.png", | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, 0.375, -0.375, 0.5, 0.5}, -- NodeBox1 | ||||
| 			{-0.375, 0.3125, 0.4375, 0.5, 0.4375, 0.5}, -- NodeBox2 | ||||
| 			{-0.375, -0.0625, 0.4375, 0.5, 0.0625, 0.5}, -- NodeBox3 | ||||
| 			{-0.3125, 0.0625, 0.45, -0.25, 0.3125, 0.48}, -- NodeBox4 | ||||
| 			{-0.1875, 0.0625, 0.45, -0.125, 0.3125, 0.48}, -- NodeBox5 | ||||
| 			{-0.0625, 0.0625, 0.45, 0, 0.3125, 0.48}, -- NodeBox6 | ||||
| 			{0.0625, 0.0625, 0.45, 0.125, 0.3125, 0.48}, -- NodeBox7 | ||||
| 			{0.1875, 0.0625, 0.45, 0.25, 0.3125, 0.48}, -- NodeBox8 | ||||
| 			{0.3125, 0.0625, 0.45, 0.375, 0.3125, 0.48}, -- NodeBox9 | ||||
| 			{0.4375, 0.0625, 0.45, 0.5, 0.3125, 0.48}, -- NodeBox10 | ||||
| 			{-0.5, 0.0625, -0.145362, -0.375, 0.125, 0.375}, -- NodeBox11 | ||||
| 			{-0.5, -0.5, -0.0625, -0.375, 0.0625, 0.0625}, -- NodeBox12 | ||||
| 			{-0.4375, -0.125, -0.0625, 0.5, -0.0911603, 0.4375}, -- NodeBox13 | ||||
| 			{-0.4375, -0.4375, 0.0625, -0.375, -0.3125, 0.375}, -- NodeBox14 | ||||
| 			{-0.375, -0.342324, 0.25, 0.5, -0.4375, 0.1875}, -- NodeBox15 | ||||
| 			{-0.5, -0.25, -0.0290173, 0.5, -0.125, 0.0125346}, -- NodeBox16 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.5, -0.5, -0.15625, 1.5, 0.5, 0.5 } | ||||
| 	}, | ||||
| 	expand = { right="homedecor:bench_large_2_right" }, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		pos.y = pos.y-0 -- player's sit position. | ||||
| 		sit_exec(pos, node, clicker) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("bench_large_2_right", { | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_generic_wood.png", | ||||
| 		"homedecor_bench_large_2_right_back.png", | ||||
| 		"homedecor_bench_large_2_right_back.png^[transformFX" | ||||
| 	}, | ||||
| 	groups = {snappy=3}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{0.375, -0.5, 0.375, 0.5, 0.5, 0.5}, -- NodeBox1 | ||||
| 			{-0.5, 0.3125, 0.4375, 0.375, 0.4375, 0.5}, -- NodeBox2 | ||||
| 			{-0.5, -0.0625, 0.4375, 0.375, 0.0625, 0.5}, -- NodeBox3 | ||||
| 			{-0.5, 0.0625, 0.45, -0.4375, 0.3125, 0.48}, -- NodeBox4 | ||||
| 			{-0.375, 0.0625, 0.45, -0.3125, 0.3125, 0.48}, -- NodeBox5 | ||||
| 			{-0.25, 0.0625, 0.45, -0.1875, 0.3125, 0.48}, -- NodeBox6 | ||||
| 			{-0.125, 0.0625, 0.45, -0.0625, 0.3125, 0.48}, -- NodeBox7 | ||||
| 			{0, 0.0625, 0.45, 0.0625, 0.3125, 0.48}, -- NodeBox8 | ||||
| 			{0.125, 0.0625, 0.45, 0.1875, 0.3125, 0.48}, -- NodeBox9 | ||||
| 			{0.25, 0.0625, 0.45, 0.3125, 0.3125, 0.48}, -- NodeBox10 | ||||
| 			{0.375, 0.0625, -0.145362, 0.5, 0.125, 0.375}, -- NodeBox11 | ||||
| 			{0.375, -0.5, -0.0625, 0.5, 0.125, 0.0625}, -- NodeBox12 | ||||
| 			{0.375, -0.4375, 0.0625, 0.4375, -0.3125, 0.375}, -- NodeBox13 | ||||
| 			{-0.5, -0.4375, 0.1875, 0.375, -0.342324, 0.25}, -- NodeBox14 | ||||
| 			{-0.5, -0.125, -0.0625, 0.4375, -0.0911603, 0.4375}, -- NodeBox15 | ||||
| 			{-0.5, -0.25, -0.0290173, 0.5, -0.125, 0.0125346}, -- NodeBox16 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| }) | ||||
|  | ||||
| homedecor.register("deckchair_head", { | ||||
| 	tiles = { | ||||
| 		"homedecor_deckchair_top_c1.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png^[transformFX", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_front.png" | ||||
| 	}, | ||||
| 	groups = { snappy = 3, not_in_creative_inventory = 1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.375, -0.3125, -0.0625, 0.375, -0.25, 0}, -- NodeBox1 | ||||
| 			{-0.375, -0.25, 0, 0.375, -0.1875, 0.0625}, -- NodeBox2 | ||||
| 			{-0.375, -0.1875, 0.0625, 0.375, -0.125, 0.125}, -- NodeBox3 | ||||
| 			{-0.375, -0.125, 0.125, 0.375, -0.0625, 0.1875}, -- NodeBox4 | ||||
| 			{-0.375, -0.0625, 0.1875, 0.375, 0, 0.25}, -- NodeBox5 | ||||
| 			{-0.375, 0, 0.25, 0.375, 0.0625, 0.3125}, -- NodeBox6 | ||||
| 			{-0.375, 0.0625, 0.3125, 0.375, 0.125, 0.375}, -- NodeBox7 | ||||
| 			{-0.375, 0.125, 0.375, 0.375, 0.1875, 0.4375}, -- NodeBox8 | ||||
| 			{-0.375, 0.1875, 0.4375, 0.375, 0.25, 0.5}, -- NodeBox9 | ||||
| 			{-0.375, -0.375, -0.5, 0.375, -0.3125, 0.0625}, -- NodeBox10 | ||||
| 			{0.3125, -0.1875, -0.5, 0.4375, -0.1575, 0.0625}, -- NodeBox11 | ||||
| 			{-0.4375, -0.1875, -0.5, -0.3125, -0.1575, 0.0625}, -- NodeBox12 | ||||
| 			{0.3125, -0.5, 0, 0.375, -0.25, 0.0625}, -- NodeBox13 | ||||
| 			{-0.375, -0.5, 0, -0.3125, -0.25, 0.0625}, -- NodeBox14 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| homedecor.register("deckchair_foot", { | ||||
| 	tiles = { | ||||
| 		"homedecor_deckchair_top_c2.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png", | ||||
| 		"homedecor_deckchair_sides.png^[transformFX", | ||||
| 		"homedecor_deckchair_front.png" | ||||
| 	}, | ||||
| 	description = "Deck chair", | ||||
| 	inventory_image = "homedecor_deckchair_inv.png", | ||||
| 	groups = { snappy = 3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.375, -0.375, -0.5, 0.375, -0.3125, 0.5}, -- NodeBox1 | ||||
| 			{0.3125, -0.5, -0.5, 0.375, -0.375, -0.4375}, -- NodeBox2 | ||||
| 			{-0.375, -0.5, -0.5, -0.3125, -0.375, -0.4375}, -- NodeBox3 | ||||
| 			{0.3125, -0.1875, 0.3, 0.4375, -0.1575, 0.5}, -- NodeBox4 | ||||
| 			{-0.4375, -0.1875, 0.3, -0.3125, -0.1575, 0.5}, -- NodeBox5 | ||||
| 			{-0.365, -0.3125, 0.32, -0.3225, -0.1875, 0.4375}, -- NodeBox6 | ||||
| 			{0.3225, -0.3125, 0.32, 0.365, -0.1875, 0.4375}, -- NodeBox7 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.45, -0.5, -0.5, 0.45, 0.35, 1.5 } | ||||
| 	}, | ||||
| 	expand = { forward="homedecor:deckchair_head" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("wall_shelf", { | ||||
| 	description = "Wall Shelf", | ||||
| 	tiles = { | ||||
|   | ||||
| @@ -147,6 +147,8 @@ dofile(homedecor.modpath.."/furniture_recipes.lua") | ||||
| dofile(homedecor.modpath.."/climate-control.lua") | ||||
|  | ||||
| dofile(homedecor.modpath.."/cobweb.lua") | ||||
| dofile(homedecor.modpath.."/books.lua") | ||||
| dofile(homedecor.modpath.."/exterior.lua") | ||||
|  | ||||
| dofile(homedecor.modpath.."/handlers/locked.lua") | ||||
|  | ||||
|   | ||||
| @@ -338,78 +338,6 @@ homedecor.register("filing_cabinet", { | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("doghouse_base", { | ||||
| 	tiles = { | ||||
| 		"homedecor_doghouse_base_top.png", | ||||
| 		"homedecor_doghouse_base_bottom.png", | ||||
| 		"homedecor_doghouse_base_side.png", | ||||
| 		"homedecor_doghouse_base_side.png", | ||||
| 		"homedecor_doghouse_base_side.png", | ||||
| 		"homedecor_doghouse_base_front.png" | ||||
| 	}, | ||||
| 	description = "Doghouse", | ||||
| 	inventory_image = "homedecor_doghouse_inv.png", | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{0.3125, -0.5, -0.4375, 0.4375, -0.3125, -0.3125}, -- NodeBox1 | ||||
| 			{0.3125, -0.5, 0.3125, 0.4375, -0.3125, 0.4375}, -- NodeBox2 | ||||
| 			{-0.4375, -0.5, 0.3125, -0.3125, -0.3125, 0.4375}, -- NodeBox3 | ||||
| 			{-0.4375, -0.5, -0.4375, -0.3125, -0.3125, -0.3125}, -- NodeBox4 | ||||
| 			{-0.4375, -0.3125, -0.4375, -0.375, 0.5, 0.4375}, -- NodeBox5 | ||||
| 			{-0.4375, 0.3125, -0.375, 0.4375, 0.5, -0.3125}, -- NodeBox6 | ||||
| 			{-0.4375, -0.3125, -0.4375, 0.4375, -0.25, 0.4375}, -- NodeBox7 | ||||
| 			{-0.375, -0.3125, -0.375, -0.1875, 0.4375, -0.3125}, -- NodeBox8 | ||||
| 			{0.1875, -0.3125, -0.375, 0.4375, 0.5, -0.3125}, -- NodeBox9 | ||||
| 			{0.375, -0.25, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox10 | ||||
| 			{-0.4375, -0.3125, 0.375, 0.4375, 0.5, 0.4375}, -- NodeBox11 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.slab_y(1.5), | ||||
| 	groups = {snappy=3}, | ||||
| 	expand = { top="homedecor:doghouse_roof" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("doghouse_roof", { | ||||
| 	tiles = { | ||||
| 		"homedecor_doghouse_roof_top.png", | ||||
| 		"homedecor_doghouse_roof_bottom.png", | ||||
| 		"homedecor_doghouse_roof_side.png", | ||||
| 		"homedecor_doghouse_roof_side.png", | ||||
| 		"homedecor_doghouse_roof_front.png", | ||||
| 		"homedecor_doghouse_roof_front.png" | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, -0.5, -0.4375, -0.4375, 0.5}, -- NodeBox17 | ||||
| 			{-0.4375, -0.4375, -0.5, -0.375, -0.375, 0.5}, -- NodeBox18 | ||||
| 			{-0.375, -0.375, -0.5, -0.3125, -0.3125, 0.5}, -- NodeBox19 | ||||
| 			{-0.3125, -0.3125, -0.5, -0.25, -0.25, 0.5}, -- NodeBox20 | ||||
| 			{-0.25, -0.25, -0.5, -0.1875, -0.1875, 0.5}, -- NodeBox21 | ||||
| 			{-0.1875, -0.1875, -0.5, -0.125, -0.125, 0.5}, -- NodeBox22 | ||||
| 			{-0.125, -0.125, -0.5, -0.0625, -0.0625, 0.5}, -- NodeBox23 | ||||
| 			{-0.0625, -0.0625, -0.5, 0.0625, 0, 0.5}, -- NodeBox24 | ||||
| 			{0.0625, -0.125, -0.5, 0.125, -0.0625, 0.5}, -- NodeBox25 | ||||
| 			{0.125, -0.1875, -0.5, 0.1875, -0.125, 0.5}, -- NodeBox26 | ||||
| 			{0.1875, -0.25, -0.5, 0.25, -0.1875, 0.5}, -- NodeBox27 | ||||
| 			{0.25, -0.3125, -0.5, 0.3125, -0.25, 0.5}, -- NodeBox28 | ||||
| 			{0.3125, -0.375, -0.5, 0.375, -0.3125, 0.5}, -- NodeBox29 | ||||
| 			{0.375, -0.4375, -0.5, 0.4375, -0.375, 0.5}, -- NodeBox30 | ||||
| 			{0.4375, -0.5, -0.5, 0.5, -0.4375, 0.5}, -- NodeBox31 | ||||
| 			{-0.4375, -0.5, -0.375, 0.4375, -0.4375, 0.4375}, -- NodeBox32 | ||||
| 			{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.4375}, -- NodeBox33 | ||||
| 			{-0.3125, -0.375, -0.375, 0.3125, -0.3125, 0.4375}, -- NodeBox34 | ||||
| 			{-0.25, -0.3125, -0.375, 0.25, -0.25, 0.4375}, -- NodeBox35 | ||||
| 			{-0.1875, -0.25, -0.375, 0.1875, -0.1875, 0.4375}, -- NodeBox36 | ||||
| 			{-0.125, -0.1875, -0.375, 0.125, -0.125, 0.4375}, -- NodeBox37 | ||||
| 			{0.0625, -0.125, -0.375, -0.0625, -0.0625, 0.4375}, -- NodeBox38 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| 	groups = {snappy=3, not_in_creative_inventory=1}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("pool_table", { | ||||
| 	tiles = { | ||||
| 		"homedecor_pool_table_top1.png", | ||||
| @@ -514,101 +442,6 @@ homedecor.register("trash_can", { | ||||
| 	collision_box = trash_cbox, | ||||
| }) | ||||
|  | ||||
| homedecor.register("well_base", { | ||||
| 	tiles = { | ||||
| 		"homedecor_well_base_top.png", | ||||
| 		"default_cobble.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_well_inv.png", | ||||
| 	description = "Water well", | ||||
| 	groups = { snappy = 3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, -0.5, -0.4375, 0.3125, 0.5, -0.3125}, -- NodeBox1 | ||||
| 			{0.3125, -0.5, -0.3125, 0.4375, 0.5, 0.3125}, -- NodeBox2 | ||||
| 			{-0.4375, -0.5, -0.3125, -0.3125, 0.5, 0.3125}, -- NodeBox3 | ||||
| 			{-0.3125, -0.5, 0.3125, 0.3125, 0.5, 0.4375}, -- NodeBox4 | ||||
| 			{0.25, -0.5, -0.375, 0.375, 0.5, -0.25}, -- NodeBox5 | ||||
| 			{0.25, -0.5, 0.25, 0.375, 0.5, 0.375}, -- NodeBox6 | ||||
| 			{-0.375, -0.5, -0.375, -0.25, 0.5, -0.25}, -- NodeBox7 | ||||
| 			{-0.375, -0.5, 0.25, -0.25, 0.5, 0.375}, -- NodeBox8 | ||||
| 			{-0.3125, -0.5, -0.5, 0.3125, -0.3125, -0.4375}, -- NodeBox9 | ||||
| 			{0.4375, -0.5, -0.3125, 0.5, -0.3125, 0.3125}, -- NodeBox10 | ||||
| 			{-0.3125, -0.5, 0.4375, 0.3125, -0.3125, 0.5}, -- NodeBox11 | ||||
| 			{-0.5, -0.5, -0.3125, -0.4375, -0.3125, 0.3125}, -- NodeBox12 | ||||
| 			{0.3125, -0.5, -0.4375, 0.4375, -0.3125, -0.3125}, -- NodeBox13 | ||||
| 			{0.3125, -0.5, 0.3125, 0.4375, -0.3125, 0.4375}, -- NodeBox14 | ||||
| 			{-0.4375, -0.5, 0.3125, -0.3125, -0.3125, 0.4375}, -- NodeBox15 | ||||
| 			{-0.4375, -0.5, -0.4375, -0.3125, -0.3125, -0.3125}, -- NodeBox16 | ||||
| 			{-0.3125, -0.5, -0.3125, 0.3125, 0, 0.3125}, -- NodeBox17 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.slab_y(2), | ||||
| 	expand = { top="homedecor:well_top" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("well_top", { | ||||
| 	tiles = { | ||||
| 		"homedecor_well_roof_top.png", | ||||
| 		"homedecor_well_roof_wood.png", | ||||
| 		"homedecor_well_roof_side3.png", | ||||
| 		"homedecor_well_roof_side3.png", | ||||
| 		"homedecor_well_roof_side2.png", | ||||
| 		"homedecor_well_roof_side1.png" | ||||
| 	}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.0625, -0.5, 0.375, 0.0625, 0.4375, 0.4375}, -- NodeBox1 | ||||
| 			{-0.0625, -0.5, -0.4375, 0.0625, 0.4375, -0.375}, -- NodeBox2 | ||||
| 			{-0.125, 0.375, -0.5, 0.125, 0.4375, 0.5}, -- NodeBox3 | ||||
| 			{0.125, 0.3125, -0.5, 0.1875, 0.375, 0.5}, -- NodeBox4 | ||||
| 			{-0.1875, 0.3125, -0.5, -0.125, 0.375, 0.5}, -- NodeBox5 | ||||
| 			{0.1875, 0.25, -0.5, 0.25, 0.3125, 0.5}, -- NodeBox6 | ||||
| 			{-0.25, 0.25, -0.5, -0.1875, 0.3125, 0.5}, -- NodeBox7 | ||||
| 			{0.25, 0.1875, -0.5, 0.3125, 0.25, 0.5}, -- NodeBox8 | ||||
| 			{-0.3125, 0.1875, -0.5, -0.25, 0.25, 0.5}, -- NodeBox9 | ||||
| 			{0.3125, 0.125, -0.5, 0.375, 0.1875, 0.5}, -- NodeBox10 | ||||
| 			{-0.375, 0.125, -0.5, -0.3125, 0.1875, 0.5}, -- NodeBox11 | ||||
| 			{0.375, 0.0625, -0.5, 0.4375, 0.125, 0.5}, -- NodeBox12 | ||||
| 			{-0.375, 0.0625, -0.5, -0.4375, 0.125, 0.5}, -- NodeBox13 | ||||
| 			{0.4375, 0, -0.5, 0.5, 0.0625, 0.5}, -- NodeBox14 | ||||
| 			{-0.5, 0, -0.5, -0.4375, 0.0625, 0.5}, -- NodeBox15 | ||||
| 			{-0.0625, 0.4375, -0.5, 0.0625, 0.5, 0.5}, -- NodeBox16 | ||||
| 			{-0.125, 0.125, -0.4375, 0.125, 0.1875, -0.375}, -- NodeBox17 | ||||
| 			{0.125, 0.1875, -0.4375, 0.1875, 0.25, -0.375}, -- NodeBox18 | ||||
| 			{-0.1875, 0.1875, -0.4375, -0.125, 0.25, -0.375}, -- NodeBox19 | ||||
| 			{-0.125, 0.125, 0.375, 0.125, 0.1875, 0.4375}, -- NodeBox20 | ||||
| 			{0.125, 0.1875, 0.375, 0.1875, 0.25, 0.4375}, -- NodeBox21 | ||||
| 			{-0.1875, 0.1875, 0.375, -0.125, 0.25, 0.4375}, -- NodeBox22 | ||||
| 			{-0.0165975, -0.159751, -0.375, 0.0165974, -0.125, 0.375}, -- NodeBox23 | ||||
| 			{-0.00414942, -0.465, -0.008299, 0.008299, -0.159751, 0.004149}, -- NodeBox24 | ||||
| 			{-0.0625, -0.0625, -0.5, 0.0625, 0, -0.4646}, -- NodeBox25 | ||||
| 			{0.0625, -0.125, -0.5, 0.125, -0.0625, -0.4646}, -- NodeBox26 | ||||
| 			{0.125, -0.25, -0.5, 0.1875, -0.125, -0.4646}, -- NodeBox27 | ||||
| 			{0.0625, -0.3125, -0.5, 0.125, -0.25, -0.4646}, -- NodeBox28 | ||||
| 			{-0.0625, -0.375, -0.5, 0.0625, -0.3125, -0.4646}, -- NodeBox29 | ||||
| 			{-0.0625, -0.3125, -0.5, -0.125, -0.25, -0.4646}, -- NodeBox30 | ||||
| 			{-0.1875, -0.25, -0.5, -0.125, -0.125, -0.4646}, -- NodeBox31 | ||||
| 			{-0.125, -0.125, -0.5, -0.0625, -0.0625, -0.4646}, -- NodeBox32 | ||||
| 			{-0.016598, -0.3125, -0.48, 0.020747, -0.0625, -0.49}, -- NodeBox33 | ||||
| 			{-0.125, -0.209544, -0.48, 0.125, -0.172199, -0.49}, -- NodeBox34 | ||||
|                         {-0.0165975, -0.200, -0.477178, 0.020747, -0.175349, -0.435685}, -- NodeBox35 | ||||
|                         {0.1, -0.75, -0.125, 0.125, -0.5, 0.125}, -- NodeBox36 | ||||
| 			{-0.125, -0.75, -0.125, -0.1, -0.5, 0.125}, -- NodeBox37 | ||||
| 			{-0.125, -0.75, -0.125, 0.125, -0.729253, 0.125}, -- NodeBox38 | ||||
| 			{-0.125, -0.75, -0.125, 0.125, -0.5, -0.1}, -- NodeBox39 | ||||
| 			{-0.125, -0.75, 0.1, 0.125, -0.5, 0.125}, -- NodeBox40 | ||||
| 			{-0.0165975,-0.465, -0.125, 0.0165974, -0.451245, 0.125}, -- NodeBox41 | ||||
| 			{-0.0165975, -0.51, 0.112033, 0.0165974, -0.46, 0.125}, -- NodeBox42 | ||||
| 			{-0.0165975, -0.51, -0.125, 0.0165974, -0.46, -0.112033}, -- NodeBox43 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null, | ||||
| }) | ||||
|  | ||||
| homedecor.register("coatrack_wallmount", { | ||||
| 	tiles = { "forniture_wood.png" }, | ||||
| 	inventory_image = "homedecor_coatrack_wallmount_inv.png", | ||||
| @@ -924,84 +757,6 @@ homedecor.register("skateboard", { | ||||
| 	on_place = minetest.rotate_node | ||||
| }) | ||||
|  | ||||
| homedecor.register("stonepath", { | ||||
| 	description = "Garden stone path", | ||||
| 	tiles = { | ||||
| 		"default_stone.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_stonepath_inv.png", | ||||
| 	groups = { snappy=3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.4375, -0.5, 0.3125, -0.3125, -0.48, 0.4375}, -- NodeBox1 | ||||
| 			{-0.25, -0.5, 0.125, 0, -0.48, 0.375}, -- NodeBox2 | ||||
| 			{0.125, -0.5, 0.125, 0.4375, -0.48, 0.4375}, -- NodeBox3 | ||||
| 			{-0.4375, -0.5, -0.125, -0.25, -0.48, 0.0625}, -- NodeBox4 | ||||
| 			{-0.0625, -0.5, -0.25, 0.25, -0.48, 0.0625}, -- NodeBox5 | ||||
| 			{0.3125, -0.5, -0.25, 0.4375, -0.48, -0.125}, -- NodeBox6 | ||||
| 			{-0.3125, -0.5, -0.375, -0.125, -0.48, -0.1875}, -- NodeBox7 | ||||
| 			{0.125, -0.5, -0.4375, 0.25, -0.48, -0.3125}, -- NodeBox8 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.4375, -0.5, -0.4375, 0.4375, -0.4, 0.4375 } | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| homedecor.register("barbecue", { | ||||
| 	description = "Barbecue", | ||||
| 	tiles = { | ||||
| 		{name="homedecor_barbecue_top.png", animation={type="vertical_frames", | ||||
| 		aspect_w=16, aspect_h=16, length=2}}, | ||||
| 		"forniture_black_metal.png", | ||||
| 	}, | ||||
| 	groups = { snappy=3 }, | ||||
| 	light_source = 9, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
|                         {-0.5, -0.5, 0.25, -0.4375, 0.0625, 0.3125}, -- NodeBox1 | ||||
| 			{0.4375, -0.5, 0.25, 0.5, 0.0625, 0.3125}, -- NodeBox2 | ||||
| 			{-0.5, -0.5, -0.3125, -0.4375, 0.0625, -0.25}, -- NodeBox3 | ||||
| 			{0.4375, -0.5, -0.3125, 0.5, 0.0625, -0.25}, -- NodeBox4 | ||||
| 			{-0.5, 0.0625, -0.3125, 0.5, 0.375, 0.3125}, -- NodeBox5 | ||||
| 			{-0.375, 0.5, -0.25, -0.313, 0.5, 0.251}, -- NodeBox6 | ||||
| 			{-0.25, 0.5, -0.25, -0.188, 0.5, 0.251}, -- NodeBox7 | ||||
| 			{-0.125, 0.5, -0.25, -0.063, 0.5, 0.251}, -- NodeBox8 | ||||
| 			{0, 0.5, -0.25, 0.062, 0.5, 0.251}, -- NodeBox9 | ||||
| 			{0.125, 0.5, -0.25, 0.187, 0.5, 0.251}, -- NodeBox10 | ||||
| 			{0.25, 0.5, -0.25, 0.312, 0.5, 0.251}, -- NodeBox11 | ||||
| 			{0.375, 0.5, -0.25, 0.437, 0.5, 0.251}, -- NodeBox12 | ||||
| 			{-0.5, 0.375, 0.251, 0.5, 0.5, 0.3125}, -- NodeBox13 | ||||
| 			{-0.5, 0.0625, -0.3125, 0.5, 0.5, -0.25}, -- NodeBox14 | ||||
| 			{-0.5, 0.0625, -0.3125, -0.438, 0.5, 0.3125}, -- NodeBox15 | ||||
| 			{0.4375, 0.0625, -0.3125, 0.5, 0.5, 0.3125}, -- NodeBox16 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.5, -0.5, -0.3125, 0.5, 0.625, 0.3125 } | ||||
|         }, | ||||
| 	expand = { top="homedecor:barbecue_meat" }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("barbecue_meat", { | ||||
| 	tiles = { | ||||
| 		"homedecor_barbecue_meat.png", | ||||
| 	}, | ||||
| 	groups = { snappy=3, not_in_creative_inventory=1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.25, -0.5, -0.125, -0.0625, -0.4375, 0.125}, -- NodeBox1 | ||||
| 			{0.125, -0.5, -0.125, 0.3125, -0.4375, 0.125}, -- NodeBox2 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| homedecor.register("beer_tap", { | ||||
| 	description = "Beer tap", | ||||
| 	tiles = { | ||||
| @@ -1126,243 +881,6 @@ homedecor.register("tool_cabinet_top", { | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| homedecor.register("swing", { | ||||
| 	description = "Tree's swing", | ||||
| 	tiles = { | ||||
| 		"homedecor_swing_top.png", | ||||
| 		"homedecor_swing_top.png^[transformR180", | ||||
| 		"homedecor_swing_top.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_swing_inv.png", | ||||
| 	groups = { snappy=3, oddly_breakable_by_hand=3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, 0.33, -0.125,  0.3125, 0.376, 0.1875}, -- NodeBox1 | ||||
| 			{-0.3125, 0.376, 0.025, -0.3,    0.5,   0.0375}, -- NodeBox2 | ||||
| 			{ 0.3,    0.376, 0.025,  0.3125, 0.5,   0.0375}, -- NodeBox3 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.3125, 0.33, -0.125, 0.3125, 0.5, 0.1875 } | ||||
| 	}, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		isceiling, pos = homedecor.find_ceiling(itemstack, placer, pointed_thing) | ||||
| 		if isceiling then | ||||
| 			local height = 0 | ||||
|  | ||||
| 			for i = 0, 4 do	-- search up to 5 spaces downward from the ceiling for the first non-buildable-to node... | ||||
| 				height = i | ||||
| 				local testpos = { x=pos.x, y=pos.y-i-1, z=pos.z } | ||||
| 				local testnode = minetest.get_node(testpos) | ||||
| 				local testreg = core.registered_nodes[testnode.name] | ||||
|  | ||||
| 				if not testreg.buildable_to then | ||||
| 					if i < 1 then | ||||
| 						minetest.chat_send_player(placer:get_player_name(), "No room under there to hang a swing.") | ||||
| 						return | ||||
| 					else | ||||
| 						break | ||||
| 					end | ||||
| 				end | ||||
| 			end | ||||
|  | ||||
| 			for j = 0, height do -- then fill that space with ropes... | ||||
| 				local testpos = { x=pos.x, y=pos.y-j, z=pos.z } | ||||
| 				local testnode = minetest.get_node(testpos) | ||||
| 				local testreg = core.registered_nodes[testnode.name] | ||||
| 				minetest.set_node(testpos, { name = "homedecor:swing_rope", param2 = fdir }) | ||||
| 			end | ||||
|  | ||||
| 			minetest.set_node({ x=pos.x, y=pos.y-height, z=pos.z }, { name = "homedecor:swing", param2 = fdir }) | ||||
|  | ||||
| 			if not homedecor.expect_infinite_stacks then | ||||
| 				itemstack:take_item() | ||||
| 				return itemstack | ||||
| 			end | ||||
|  | ||||
| 		else | ||||
| 			minetest.chat_send_player(placer:get_player_name(), "You have to point at the bottom side of an overhanging object to place a swing.") | ||||
| 		end | ||||
| 	end, | ||||
| 	after_dig_node = function(pos, oldnode, oldmetadata, digger) | ||||
| 		for i = 0, 4 do | ||||
| 			local testpos = { x=pos.x, y=pos.y+i+1, z=pos.z } | ||||
| 			if minetest.get_node(testpos).name == "homedecor:swing_rope" then | ||||
| 				minetest.remove_node(testpos) | ||||
| 			else | ||||
| 				return | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| homedecor.register("swing_rope", { | ||||
| 	tiles = { | ||||
| 		"homedecor_swingrope_sides.png" | ||||
| 	}, | ||||
| 	groups = { not_in_creative_inventory=1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, -0.5, 0.025, -0.3, 0.5, 0.0375}, -- NodeBox1 | ||||
| 			{0.3, -0.5, 0.025, 0.3125, 0.5, 0.0375}, -- NodeBox2 | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = homedecor.nodebox.null | ||||
| }) | ||||
|  | ||||
| local bookcolors = { | ||||
| 	"red", | ||||
| 	"green", | ||||
| 	"blue", | ||||
| 	"violet", | ||||
| 	"grey", | ||||
| 	"brown" | ||||
| } | ||||
|  | ||||
| local BOOK_FORMNAME = "homedecor:book_form" | ||||
|  | ||||
| for c in ipairs(bookcolors) do | ||||
| 	local color = bookcolors[c] | ||||
| 	local color_d = S(bookcolors[c]) | ||||
|  | ||||
| 	local function book_dig(pos, node, digger) | ||||
| 		if minetest.is_protected(pos, digger:get_player_name()) then return end | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		local stack = ItemStack({ | ||||
| 			name = "homedecor:book_"..color, | ||||
| 			metadata = meta:get_string("text"), | ||||
| 		}) | ||||
| 		stack = digger:get_inventory():add_item("main", stack) | ||||
| 		if not stack:is_empty() then | ||||
| 			minetest.item_drop(stack, digger, pos) | ||||
| 		end | ||||
| 		minetest.remove_node(pos) | ||||
| 	end | ||||
|  | ||||
| homedecor.register("book_"..color, { | ||||
| 	description = S("Book (%s)"):format(color_d), | ||||
| 	mesh = "homedecor_book.obj", | ||||
| 	tiles = { "homedecor_book_"..color..".png" }, | ||||
| 	inventory_image = "homedecor_book_"..color.."_inv.png", | ||||
| 	wield_image = "homedecor_book_"..color.."_inv.png", | ||||
| 	groups = { snappy=3, oddly_breakable_by_hand=3, book=1 }, | ||||
| 	stack_max = 1, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		local fdir = node.param2 | ||||
| 		minetest.swap_node(pos, { name = "homedecor:book_open_"..color, param2 = fdir }) | ||||
| 	end, | ||||
| 	on_place = function(itemstack, placer, pointed_thing) | ||||
| 		local plname = placer:get_player_name() | ||||
| 		local pos = pointed_thing.under | ||||
| 		local node = minetest.get_node(pos) | ||||
| 		local n = minetest.registered_nodes[node.name] | ||||
| 		if not n.buildable_to then | ||||
| 			pos = pointed_thing.above | ||||
| 			node = minetest.get_node(pos) | ||||
| 			n = minetest.registered_nodes[node.name] | ||||
| 			if not n.buildable_to then return end | ||||
| 		end | ||||
| 		if minetest.is_protected(pos, plname) then return end | ||||
| 		local fdir = minetest.dir_to_facedir(placer:get_look_dir()) | ||||
| 		minetest.set_node(pos, { | ||||
| 			name = "homedecor:book_"..color, | ||||
| 			param2 = fdir, | ||||
| 		}) | ||||
| 		local text = itemstack:get_metadata() or "" | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("text", text) | ||||
| 		local data = minetest.deserialize(text) or {} | ||||
| 		if data.title and data.title ~= "" then | ||||
| 			meta:set_string("infotext", data.title) | ||||
| 		end | ||||
| 		if not minetest.setting_getbool("creative_mode") then | ||||
| 			itemstack:take_item() | ||||
| 		end | ||||
| 		return itemstack | ||||
| 	end, | ||||
| 	on_dig = book_dig, | ||||
| 	on_use = function(itemstack, user, pointed_thing) | ||||
| 		local player_name = user:get_player_name() | ||||
| 		local data = minetest.deserialize(itemstack:get_metadata()) | ||||
| 		local title, text, owner = "", "", player_name | ||||
| 		if data then | ||||
| 			title, text, owner = data.title, data.text, data.owner | ||||
| 		end | ||||
| 		local formspec | ||||
| 		if owner == player_name then | ||||
| 			formspec = "size[8,8]"..default.gui_bg..default.gui_bg_img.. | ||||
| 				"field[0.5,1;7.5,0;title;Book title :;".. | ||||
| 					minetest.formspec_escape(title).."]".. | ||||
| 				"textarea[0.5,1.5;7.5,7;text;Book content :;".. | ||||
| 					minetest.formspec_escape(text).."]".. | ||||
| 				"button_exit[2.5,7.5;3,1;save;Save]" | ||||
| 		else | ||||
| 			formspec = "size[8,8]"..default.gui_bg.. | ||||
| 			"button_exit[7,0.25;1,0.5;close;X]".. | ||||
| 			default.gui_bg_img.. | ||||
| 				"label[0.5,0.5;by "..owner.."]".. | ||||
| 				"label[0.5,0;"..minetest.formspec_escape(title).."]".. | ||||
| 				"textarea[0.5,1.5;7.5,7;;"..minetest.formspec_escape(text)..";]" | ||||
| 		end | ||||
| 		minetest.show_formspec(user:get_player_name(), BOOK_FORMNAME, formspec) | ||||
| 	end, | ||||
| 	selection_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.2, -0.5, -0.25, 0.2, -0.35, 0.25} | ||||
| 	}, | ||||
| 	collision_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.15, -0.5, -0.25, 0.15, -0.35, 0.25} | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("book_open_"..color, { | ||||
| 	mesh = "homedecor_book_open.obj", | ||||
| 	tiles = { "homedecor_book_open_"..color..".png" }, | ||||
| 	groups = { snappy=3, oddly_breakable_by_hand=3, not_in_creative_inventory=1 }, | ||||
| 	drop = "homedecor:book_"..color, | ||||
| 	on_dig = book_dig, | ||||
| 	on_rightclick = function(pos, node, clicker) | ||||
| 		local fdir = node.param2 | ||||
| 		minetest.swap_node(pos, { name = "homedecor:book_"..color, param2 = fdir }) | ||||
| 		minetest.sound_play("homedecor_book_close", { | ||||
| 			pos=pos, | ||||
| 			max_hear_distance = 3, | ||||
| 			gain = 2, | ||||
| 			}) | ||||
| 	end, | ||||
| 	selection_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25} | ||||
| 	}, | ||||
| 	collision_box = { | ||||
|             type = "fixed", | ||||
| 			fixed = {-0.35, -0.5, -0.25, 0.35, -0.4, 0.25} | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| end | ||||
|  | ||||
| minetest.register_on_player_receive_fields(function(player, form_name, fields) | ||||
| 	if form_name ~= BOOK_FORMNAME or not fields.save then | ||||
| 		return | ||||
| 	end | ||||
| 	local stack = player:get_wielded_item() | ||||
| 	if minetest.get_item_group(stack:get_name(), "book") == 0 then | ||||
| 		return | ||||
| 	end | ||||
| 	local data = minetest.deserialize(stack:get_metadata()) or {} | ||||
| 	data.title, data.text, data.owner = | ||||
| 		fields.title, fields.text, player:get_player_name() | ||||
| 	stack:set_metadata(minetest.serialize(data)) | ||||
| 	player:set_wielded_item(stack) | ||||
| 	minetest.log("action", player:get_player_name().." has written in a book (title: \""..fields.title.."\"): \""..fields.text.. | ||||
| 		"\" at location: "..minetest.pos_to_string(player:getpos())) | ||||
| end) | ||||
|  | ||||
| homedecor.register("calendar", { | ||||
| 	description = "Calendar", | ||||
| 	drawtype = "signlike", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user