Split the big "homedecor" mod into multiple sub-mods
Any of these new submods can be run without any other components that were once part of the big "homedecor" mod, other than homedecor_common and homedecor_i18n Reduced dependencies where possible, but each submod still has its various dependencies more or less the same as before, i.e. some need basic_materials, others need unifieddyes, some need building_blocks, and so on. All of the stuff that used to be under homedecor/handlers got moved to homedecor_common, as did any models and/or textures that are used by more than one other homedecor component. All the miscellaneous items that didn't warrant their own mod ended up in homedecor_misc, which can also be thought of as the remains of the original "homedecor" mod, renamed.
| @@ -1,8 +1,11 @@ | ||||
| Most code and all textures by Vanessa Ezekowitz. | ||||
| Most code and textures by Vanessa Ezekowitz. | ||||
| 
 | ||||
| Some code copied and modified from the game's default mods (especially  | ||||
| doors) and ironzorg's flowers mod. | ||||
| 
 | ||||
| Whatever is stated here applies to all homedecor modpack components, as | ||||
| appropriate. | ||||
| 
 | ||||
| Licenses:  | ||||
| * Door open/close sound by Slanesh on freesound.org | ||||
| 	http://freesound.org/people/Slanesh/sounds/31768/ | ||||
| @@ -14,3 +17,4 @@ Licenses: | ||||
| 	http://www.freesfx.co.uk/sfx/book?p=3 | ||||
| * Phone ringing sound by andyt's on http://www.freesfx.co.uk/ | ||||
| 	http://www.freesfx.co.uk/sfx/phone?p=5 | ||||
| 
 | ||||
| @@ -1,166 +0,0 @@ | ||||
|  | ||||
| local S = homedecor_i18n.gettext | ||||
|  | ||||
| minetest.register_node("homedecor:bathroom_tiles_dark", { | ||||
| 	description = S("Bathroom/kitchen tiles (dark)"), | ||||
| 	tiles = { | ||||
| 		"homedecor_bathroom_tiles_bg.png" | ||||
| 	}, | ||||
| 	overlay_tiles = { | ||||
| 		{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 }, | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette_extended.png", | ||||
| 	groups = {cracky=3, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = unifieddyes.on_construct, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("homedecor:bathroom_tiles_medium", { | ||||
| 	description = S("Bathroom/kitchen tiles (medium)"), | ||||
| 	tiles = { | ||||
| 		"homedecor_bathroom_tiles_bg.png" | ||||
| 	}, | ||||
| 	overlay_tiles = { | ||||
| 		{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 }, | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette_extended.png", | ||||
| 	groups = {cracky=3, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = unifieddyes.on_construct, | ||||
| }) | ||||
|  | ||||
| minetest.register_node("homedecor:bathroom_tiles_light", { | ||||
| 	description = S("Bathroom/kitchen tiles (light)"), | ||||
| 	tiles = { | ||||
| 		"homedecor_bathroom_tiles_bg.png" | ||||
| 	}, | ||||
| 	overlay_tiles = { | ||||
| 			{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff }, | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette_extended.png", | ||||
| 	groups = {cracky=3, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = unifieddyes.on_construct, | ||||
| }) | ||||
|  | ||||
| local tr_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 } | ||||
| } | ||||
|  | ||||
| homedecor.register("towel_rod", { | ||||
| 	description = S("Towel rod with towel"), | ||||
| 	mesh = "homedecor_towel_rod.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_terrycloth.png", | ||||
| 		"default_wood.png", | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_towel_rod_inv.png", | ||||
| 	selection_box = tr_cbox, | ||||
| 	walkable = false, | ||||
| 	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3}, | ||||
| 	sounds = default.node_sound_defaults(), | ||||
| }) | ||||
|  | ||||
| homedecor.register("medicine_cabinet", { | ||||
| 	description = S("Medicine cabinet"), | ||||
| 	mesh = "homedecor_medicine_cabinet.obj", | ||||
| 	tiles = { | ||||
| 		'default_wood.png', | ||||
| 		'homedecor_medicine_cabinet_mirror.png' | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_medicine_cabinet_inv.png", | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5} | ||||
| 	}, | ||||
| 	walkable = false, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	on_punch = function(pos, node, puncher, pointed_thing) | ||||
| 		node.name = "homedecor:medicine_cabinet_open" | ||||
| 		minetest.swap_node(pos, node) | ||||
| 	end, | ||||
| 	infotext=S("Medicine cabinet"), | ||||
| 	inventory = { | ||||
| 		size=6, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("medicine_cabinet_open", { | ||||
| 	mesh = "homedecor_medicine_cabinet_open.obj", | ||||
| 	tiles = { | ||||
| 		'default_wood.png', | ||||
| 		'homedecor_medicine_cabinet_mirror.png', | ||||
| 		'homedecor_medicine_cabinet_inside.png' | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5} | ||||
| 	}, | ||||
| 	walkable = false, | ||||
| 	groups = { snappy = 3, not_in_creative_inventory=1 }, | ||||
| 	drop = "homedecor:medicine_cabinet", | ||||
| 	on_punch = function(pos, node, puncher, pointed_thing) | ||||
| 		node.name = "homedecor:medicine_cabinet" | ||||
| 		minetest.swap_node(pos, node) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| -- convert old static nodes | ||||
|  | ||||
| homedecor.old_static_bathroom_tiles = { | ||||
| 	"homedecor:tiles_1", | ||||
| 	"homedecor:tiles_2", | ||||
| 	"homedecor:tiles_3", | ||||
| 	"homedecor:tiles_4", | ||||
| 	"homedecor:tiles_red", | ||||
| 	"homedecor:tiles_tan", | ||||
| 	"homedecor:tiles_yellow", | ||||
| 	"homedecor:tiles_green", | ||||
| 	"homedecor:tiles_blue" | ||||
| } | ||||
|  | ||||
| local old_to_color = { | ||||
| 	"light_grey", | ||||
| 	"grey", | ||||
| 	"black", | ||||
| 	"black" | ||||
| } | ||||
|  | ||||
| minetest.register_lbm({ | ||||
| 	name = "homedecor:convert_bathroom_tiles", | ||||
| 	label = "Convert bathroom tiles to use param2 color", | ||||
| 	run_at_every_load = false, | ||||
| 	nodenames = homedecor.old_static_bathroom_tiles, | ||||
| 	action = function(pos, node) | ||||
| 		local name = node.name | ||||
| 		local newname = "homedecor:bathroom_tiles_light" | ||||
| 		local a = string.find(name, "_") | ||||
| 		local color = string.sub(name, a + 1) | ||||
|  | ||||
| 		if color == "tan" then | ||||
| 			color = "yellow_s50" | ||||
| 		elseif color == "1" or color == "2" or color == "3" or color == "4" then | ||||
| 			if color == "4" then | ||||
| 				newname = "homedecor:bathroom_tiles_medium" | ||||
| 			end | ||||
| 			color = old_to_color[tonumber(color)] | ||||
| 		elseif color ~= "yellow" then | ||||
| 			color = color.."_s50" | ||||
| 		end | ||||
|  | ||||
| 		local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "extended") | ||||
|  | ||||
| 		minetest.set_node(pos, { name = newname, param2 = paletteidx }) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("dye", "unifieddyes:"..color) | ||||
| 		meta:set_string("palette", "ext") | ||||
| 	end | ||||
| }) | ||||
							
								
								
									
										3024
									
								
								homedecor/crafts.lua
									
									
									
									
									
								
							
							
						
						| @@ -1,143 +0,0 @@ | ||||
| -- Various home electronics | ||||
|  | ||||
| local S = homedecor_i18n.gettext | ||||
|  | ||||
| homedecor.register("speaker", { | ||||
| 	description = S("Large Stereo Speaker"), | ||||
| 	mesh="homedecor_speaker_large.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_speaker_sides.png", | ||||
| 		"homedecor_speaker_front.png" | ||||
| 	}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		minetest.set_node(pos, {name = "homedecor:speaker_open", param2 = node.param2}) | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| homedecor.register("speaker_open", { | ||||
| 	description = S("Large Stereo Speaker, open front"), | ||||
| 	mesh="homedecor_speaker_large_open.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_speaker_sides.png", | ||||
| 		"homedecor_speaker_driver.png", | ||||
| 		"homedecor_speaker_open_front.png", | ||||
| 		{ name = "homedecor_generic_metal.png", color = homedecor.color_black } | ||||
| 	}, | ||||
| 	groups = { snappy = 3, not_in_creative_inventory=1 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		minetest.set_node(pos, {name = "homedecor:speaker", param2 = node.param2}) | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| local spk_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -3/16, -8/16, 1/16, 3/16, -2/16, 7/16 } | ||||
| } | ||||
|  | ||||
| homedecor.register("speaker_small", { | ||||
| 	description = S("Small Surround Speaker"), | ||||
| 	mesh="homedecor_speaker_small.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_speaker_sides.png", | ||||
| 		"homedecor_speaker_front.png" | ||||
| 	}, | ||||
| 	selection_box = spk_cbox, | ||||
| 	walkable = false, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
|  | ||||
| homedecor.register("stereo", { | ||||
| 	description = S("Stereo Receiver"), | ||||
| 	tiles = { 'homedecor_stereo_top.png', | ||||
| 			'homedecor_stereo_bottom.png', | ||||
| 			'homedecor_stereo_left.png^[transformFX', | ||||
| 			'homedecor_stereo_left.png', | ||||
| 			'homedecor_stereo_back.png', | ||||
| 			'homedecor_stereo_front.png'}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
|  | ||||
| homedecor.register("projection_screen", { | ||||
| 	description = S("Projection Screen Material"), | ||||
| 	drawtype = 'signlike', | ||||
| 	tiles = { 'homedecor_projection_screen.png' }, | ||||
| 	wield_image = 'homedecor_projection_screen_inv.png', | ||||
| 	inventory_image = 'homedecor_projection_screen_inv.png', | ||||
| 	walkable = false, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_leaves_defaults(), | ||||
| 	paramtype2 = 'wallmounted', | ||||
| 	selection_box = { | ||||
| 		type = "wallmounted", | ||||
| 		--wall_side = = <default> | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("television", { | ||||
| 	description = S("Small CRT Television"), | ||||
| 	tiles = { 'homedecor_television_top.png', | ||||
| 		  'homedecor_television_bottom.png', | ||||
| 		  'homedecor_television_left.png^[transformFX', | ||||
| 		  'homedecor_television_left.png', | ||||
| 		  'homedecor_television_back.png', | ||||
| 		   { name="homedecor_television_front_animated.png", | ||||
| 			  animation={ | ||||
| 				type="vertical_frames", | ||||
| 				aspect_w=16, | ||||
| 				aspect_h=16, | ||||
| 				length=80.0 | ||||
| 			  } | ||||
| 		   } | ||||
| 	}, | ||||
| 	light_source = default.LIGHT_MAX - 1, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
|  | ||||
| homedecor.register("dvd_vcr", { | ||||
| 	description = S("DVD and VCR"), | ||||
| 	tiles = { | ||||
| 		"homedecor_dvdvcr_top.png", | ||||
| 		"homedecor_dvdvcr_bottom.png", | ||||
| 		"homedecor_dvdvcr_sides.png", | ||||
| 		"homedecor_dvdvcr_sides.png^[transformFX", | ||||
| 		"homedecor_dvdvcr_back.png", | ||||
| 		"homedecor_dvdvcr_front.png", | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_dvdvcr_inv.png", | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.3125, -0.5, -0.25, 0.3125, -0.375, 0.1875}, | ||||
| 			{-0.25, -0.5, -0.25, 0.25, -0.1875, 0.125}, | ||||
| 		} | ||||
| 	}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
|  | ||||
| local tel_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -0.25, -0.5, -0.1875, 0.25, -0.21, 0.15 } | ||||
| } | ||||
|  | ||||
| homedecor.register("telephone", { | ||||
| 	mesh = "homedecor_telephone.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_telephone_dial.png", | ||||
| 		"homedecor_telephone_base.png", | ||||
| 		"homedecor_telephone_handset.png", | ||||
| 		"homedecor_telephone_cord.png", | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_telephone_inv.png", | ||||
| 	description = S("Telephone"), | ||||
| 	groups = {snappy=3}, | ||||
| 	selection_box = tel_cbox, | ||||
| 	walkable = false, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
| @@ -1,280 +0,0 @@ | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:table", | ||||
| 	recipe = { | ||||
| 		{ "default:wood","default:wood", "default:wood" }, | ||||
| 		{ "group:stick", "", "group:stick" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| 	output = "homedecor:table_mahogany", | ||||
| 	recipe = { | ||||
| 		"homedecor:table", | ||||
| 		"dye:brown", | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| 	output = "homedecor:table_mahogany", | ||||
| 	recipe = { | ||||
| 		"homedecor:table", | ||||
| 		"unifieddyes:dark_orange", | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| 	output = "homedecor:table_white", | ||||
| 	recipe = { | ||||
| 		"homedecor:table", | ||||
| 		"dye:white", | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:table", | ||||
| 	burntime = 30, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:table_mahogany", | ||||
| 	burntime = 30, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:table_white", | ||||
| 	burntime = 30, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:kitchen_chair_wood 2", | ||||
| 	recipe = { | ||||
| 		{ "group:stick",""}, | ||||
| 		{ "group:wood","group:wood" }, | ||||
| 		{ "group:stick","group:stick" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:armchair 2", | ||||
| 	recipe = { | ||||
| 	{ "wool:white",""}, | ||||
| 	{ "group:wood","group:wood" }, | ||||
| 	{ "wool:white","wool:white" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:armchair", | ||||
| 	palette = "wallmounted", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:armchair", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "shapeless", | ||||
| 	output = "homedecor:kitchen_chair_padded", | ||||
| 	recipe = { | ||||
| 		"homedecor:kitchen_chair_wood", | ||||
| 		"wool:white", | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:kitchen_chair_padded", | ||||
| 	palette = "wallmounted", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:kitchen_chair_padded", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:kitchen_chair_wood", | ||||
| 	burntime = 15, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:kitchen_chair_padded", | ||||
| 	burntime = 15, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:armchair", | ||||
| 	burntime = 30, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:standing_lamp_off", | ||||
| 	recipe = { | ||||
| 		{"homedecor:table_lamp_off"}, | ||||
| 		{"group:stick"}, | ||||
| 		{"group:stick"}, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:standing_lamp_off", | ||||
| 	palette = "extended", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:standing_lamp_off", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	type = "fuel", | ||||
| 	recipe = "homedecor:table_lamp_off", | ||||
| 	burntime = 10, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:table_lamp_off", | ||||
| 	recipe = { | ||||
| 		{ "wool:white", "default:torch", "wool:white"}, | ||||
| 		{ "", "group:stick", ""}, | ||||
| 		{ "", "stairs:slab_wood", "" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:table_lamp_off", | ||||
| 	recipe = { | ||||
| 		{ "cottages:wool", "default:torch", "cottages:wool"}, | ||||
| 		{ "", "group:stick", ""}, | ||||
| 		{ "", "stairs:slab_wood", "" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:table_lamp_off", | ||||
| 	recipe = { | ||||
| 		{ "wool:white", "default:torch", "wool:white"}, | ||||
| 		{ "", "group:stick", ""}, | ||||
| 		{ "", "moreblocks:slab_wood", "" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:table_lamp_off", | ||||
| 	recipe = { | ||||
| 		{ "cottages:wool", "default:torch", "cottages:wool"}, | ||||
| 		{ "", "group:stick", ""}, | ||||
| 		{ "", "moreblocks:slab_wood", "" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:table_lamp_off", | ||||
| 	palette = "extended", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:table_lamp_off", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:toilet", | ||||
| 	recipe = { | ||||
| 		{ "","","bucket:bucket_water"}, | ||||
| 		{ "group:marble","group:marble", "group:marble" }, | ||||
| 		{ "", "bucket:bucket_empty", "" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:sink", | ||||
| 	recipe = { | ||||
| 		{ "group:marble","bucket:bucket_empty", "group:marble" }, | ||||
| 		{ "", "group:marble", "" } | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:taps", | ||||
| 	recipe = { | ||||
| 		{ "default:steel_ingot","bucket:bucket_water", "default:steel_ingot" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:taps_brass", | ||||
| 	recipe = { | ||||
| 		{ "technic:brass_ingot","bucket:bucket_water", "technic:brass_ingot" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:shower_tray", | ||||
| 	recipe = { | ||||
| 		{ "group:marble","bucket:bucket_empty", "group:marble" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:shower_head", | ||||
| 	recipe = { | ||||
| 		{"default:steel_ingot", "bucket:bucket_water"}, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:bathtub_clawfoot_brass_taps", | ||||
| 	recipe = { | ||||
| 		{ "homedecor:taps_brass", "", "" }, | ||||
| 		{ "group:marble", "", "group:marble" }, | ||||
| 		{"default:steel_ingot", "group:marble", "default:steel_ingot"}, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:bathtub_clawfoot_chrome_taps", | ||||
| 	recipe = { | ||||
| 		{ "homedecor:taps", "", "" }, | ||||
| 		{ "group:marble", "", "group:marble" }, | ||||
| 		{"default:steel_ingot", "group:marble", "default:steel_ingot"}, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:bars 6", | ||||
| 	recipe = { | ||||
| 		{ "default:steel_ingot","default:steel_ingot","default:steel_ingot" }, | ||||
| 		{ "homedecor:pole_wrought_iron","homedecor:pole_wrought_iron","homedecor:pole_wrought_iron" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:L_binding_bars 3", | ||||
| 	recipe = { | ||||
| 		{ "homedecor:bars","" }, | ||||
| 		{ "homedecor:bars","homedecor:bars" }, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:torch_wall 10", | ||||
| 	recipe = { | ||||
| 		{ "default:coal_lump" }, | ||||
| 		{ "default:steel_ingot" }, | ||||
| 	}, | ||||
| }) | ||||
| @@ -1,24 +0,0 @@ | ||||
| local handlerpath = homedecor.modpath .. "/handlers/" | ||||
|  | ||||
| -- nodebox arithmetics and helpers | ||||
| -- (please keep non-generic nodeboxes with their node definition) | ||||
| dofile(handlerpath.."nodeboxes.lua") | ||||
|  | ||||
| -- expand and unexpand decor | ||||
| dofile(handlerpath.."expansion.lua") | ||||
|  | ||||
| -- register nodes that cook stuff | ||||
| dofile(handlerpath.."furnaces.lua") | ||||
|  | ||||
| -- inventory related functionality, like initialization, ownership and spawning locked versions | ||||
| dofile(handlerpath.."inventory.lua") | ||||
|  | ||||
| -- glue it all together into a registration function | ||||
| dofile(handlerpath.."registration.lua") | ||||
|  | ||||
| -- some nodes have particle spawners | ||||
| dofile(handlerpath.."water_particles.lua") | ||||
|  | ||||
|  | ||||
| dofile(handlerpath.."mt_game_beds_functions.lua") | ||||
| dofile(handlerpath.."sit.lua") | ||||
| @@ -1,256 +0,0 @@ | ||||
| -- This file supplies refrigerators | ||||
|  | ||||
| local S = homedecor_i18n.gettext | ||||
|  | ||||
| local function N_(x) return x end | ||||
|  | ||||
| -- steel-textured fridge | ||||
| homedecor.register("refrigerator_steel", { | ||||
| 	mesh = "homedecor_refrigerator.obj", | ||||
| 	tiles = { "homedecor_refrigerator_steel.png" }, | ||||
| 	inventory_image = "homedecor_refrigerator_steel_inv.png", | ||||
| 	description = S("Refrigerator (stainless steel)"), | ||||
| 	groups = {snappy=3}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	selection_box = homedecor.nodebox.slab_y(2), | ||||
| 	collision_box = homedecor.nodebox.slab_y(2), | ||||
| 	expand = { top="placeholder" }, | ||||
| 	infotext=S("Refrigerator"), | ||||
| 	inventory = { | ||||
| 		size=50, | ||||
| 		lockable=true, | ||||
| 	}, | ||||
| 	on_rotate = screwdriver.rotate_simple | ||||
| }) | ||||
|  | ||||
| -- white, enameled fridge | ||||
| homedecor.register("refrigerator_white", { | ||||
| 	mesh = "homedecor_refrigerator.obj", | ||||
| 	tiles = { "homedecor_refrigerator_white.png" }, | ||||
| 	inventory_image = "homedecor_refrigerator_white_inv.png", | ||||
| 	description = S("Refrigerator"), | ||||
| 	groups = {snappy=3}, | ||||
| 	selection_box = homedecor.nodebox.slab_y(2), | ||||
| 	collision_box = homedecor.nodebox.slab_y(2), | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	expand = { top="placeholder" }, | ||||
| 	infotext=S("Refrigerator"), | ||||
| 	inventory = { | ||||
| 		size=50, | ||||
| 		lockable=true, | ||||
| 	}, | ||||
| 	on_rotate = screwdriver.rotate_simple | ||||
| }) | ||||
|  | ||||
| minetest.register_alias("homedecor:refrigerator_white_bottom", "homedecor:refrigerator_white") | ||||
| minetest.register_alias("homedecor:refrigerator_white_top", "air") | ||||
|  | ||||
| minetest.register_alias("homedecor:refrigerator_steel_bottom", "homedecor:refrigerator_steel") | ||||
| minetest.register_alias("homedecor:refrigerator_steel_top", "air") | ||||
|  | ||||
| minetest.register_alias("homedecor:refrigerator_white_bottom_locked", "homedecor:refrigerator_white_locked") | ||||
| minetest.register_alias("homedecor:refrigerator_white_top_locked", "air") | ||||
| minetest.register_alias("homedecor:refrigerator_locked", "homedecor:refrigerator_white_locked") | ||||
|  | ||||
| minetest.register_alias("homedecor:refrigerator_steel_bottom_locked", "homedecor:refrigerator_steel_locked") | ||||
| minetest.register_alias("homedecor:refrigerator_steel_top_locked", "air") | ||||
|  | ||||
| -- kitchen "furnaces" | ||||
| homedecor.register_furnace("oven", { | ||||
| 	description = S("Oven"), | ||||
| 	tile_format = "homedecor_oven_%s%s.png", | ||||
| 	output_slots = 4, | ||||
| 	output_width = 2, | ||||
| 	cook_speed = 1.25, | ||||
| }) | ||||
|  | ||||
| homedecor.register_furnace("oven_steel", { | ||||
| 	description = S("Oven (stainless steel)"), | ||||
| 	tile_format = "homedecor_oven_steel_%s%s.png", | ||||
| 	output_slots = 4, | ||||
| 	output_width = 2, | ||||
| 	cook_speed = 1.25, | ||||
| }) | ||||
|  | ||||
| homedecor.register_furnace("microwave_oven", { | ||||
| 	description = S("Microwave Oven"), | ||||
| 	tiles = { | ||||
| 		"homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180", | ||||
| 		"homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90", | ||||
| 		"homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front.png" | ||||
| 	}, | ||||
| 	tiles_active = { | ||||
| 		"homedecor_microwave_top.png", "homedecor_microwave_top.png^[transformR180", | ||||
| 		"homedecor_microwave_top.png^[transformR270", "homedecor_microwave_top.png^[transformR90", | ||||
| 		"homedecor_microwave_top.png^[transformR180", "homedecor_microwave_front_active.png" | ||||
| 	}, | ||||
| 	output_slots = 2, | ||||
| 	output_width = 2, | ||||
| 	cook_speed = 1.5, | ||||
| 	extra_nodedef_fields = { | ||||
| 		node_box = { | ||||
| 			type = "fixed", | ||||
| 			fixed = { -0.5, -0.5, -0.125, 0.5, 0.125, 0.5 }, | ||||
| 		}, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| -- coffee! | ||||
| -- coffee! | ||||
| -- coffee! | ||||
|  | ||||
| local cm_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { | ||||
| 		{     0, -8/16,     0,  7/16,  3/16,  8/16 }, | ||||
| 		{ -4/16, -8/16, -6/16, -1/16, -5/16, -3/16 } | ||||
| 	} | ||||
| } | ||||
|  | ||||
| homedecor.register("coffee_maker", { | ||||
| 	mesh = "homedecor_coffeemaker.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_coffeemaker_decanter.png", | ||||
| 		"homedecor_coffeemaker_cup.png", | ||||
| 		"homedecor_coffeemaker_case.png", | ||||
| 	}, | ||||
| 	description = S("Coffee Maker"), | ||||
| 	inventory_image = "homedecor_coffeemaker_inv.png", | ||||
| 	walkable = false, | ||||
| 	groups = {snappy=3}, | ||||
| 	selection_box = cm_cbox, | ||||
| 	node_box = cm_cbox, | ||||
| 	on_rotate = screwdriver.disallow | ||||
| }) | ||||
|  | ||||
| local fdir_to_steampos = { | ||||
| 	x = { 0.15,   0.275, -0.15,  -0.275 }, | ||||
| 	z = { 0.275, -0.15,  -0.275,  0.15  } | ||||
| } | ||||
|  | ||||
| minetest.register_abm({ | ||||
| 	nodenames = "homedecor:coffee_maker", | ||||
| 	label = "sfx", | ||||
| 	interval = 2, | ||||
| 	chance = 1, | ||||
| 	action = function(pos, node) | ||||
| 		local fdir = node.param2 | ||||
| 		if fdir and fdir < 4 then | ||||
|  | ||||
| 			local steamx = fdir_to_steampos.x[fdir + 1] | ||||
| 			local steamz = fdir_to_steampos.z[fdir + 1] | ||||
|  | ||||
| 			minetest.add_particlespawner({ | ||||
| 				amount = 1, | ||||
| 				time = 1, | ||||
| 				minpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz}, | ||||
| 				maxpos = {x=pos.x - steamx, y=pos.y - 0.35, z=pos.z - steamz}, | ||||
| 				minvel = {x=-0.003, y=0.01, z=-0.003}, | ||||
| 				maxvel = {x=0.003, y=0.01, z=-0.003}, | ||||
| 				minacc = {x=0.0,y=-0.0,z=-0.0}, | ||||
| 				maxacc = {x=0.0,y=0.003,z=-0.0}, | ||||
| 				minexptime = 2, | ||||
| 				maxexptime = 5, | ||||
| 				minsize = 1, | ||||
| 				maxsize = 1.2, | ||||
| 				collisiondetection = false, | ||||
| 				texture = "homedecor_steam.png", | ||||
| 			}) | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| homedecor.register("toaster", { | ||||
| 	description = S("Toaster"), | ||||
| 	tiles = { "homedecor_toaster_sides.png" }, | ||||
| 	inventory_image = "homedecor_toaster_inv.png", | ||||
| 	walkable = false, | ||||
| 	groups = { snappy=3 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1 | ||||
| 		}, | ||||
| 	}, | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		local fdir = node.param2 | ||||
| 		minetest.set_node(pos, { name = "homedecor:toaster_loaf", param2 = fdir }) | ||||
| 		minetest.sound_play("toaster", { | ||||
| 			pos = pos, | ||||
| 			gain = 1.0, | ||||
| 			max_hear_distance = 5 | ||||
| 		}) | ||||
| 		return itemstack | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| homedecor.register("toaster_loaf", { | ||||
| 	tiles = { | ||||
| 		"homedecor_toaster_toploaf.png", | ||||
| 		"homedecor_toaster_sides.png", | ||||
| 		"homedecor_toaster_sides.png", | ||||
| 		"homedecor_toaster_sides.png", | ||||
| 		"homedecor_toaster_sides.png", | ||||
| 		"homedecor_toaster_sides.png" | ||||
| 	}, | ||||
| 	walkable = false, | ||||
| 	groups = { snappy=3, not_in_creative_inventory=1 }, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.0625, -0.5, -0.125, 0.125, -0.3125, 0.125}, -- NodeBox1 | ||||
| 			{-0.03125, -0.3125, -0.0935, 0, -0.25, 0.0935}, -- NodeBox2 | ||||
| 			{0.0625, -0.3125, -0.0935, 0.0935, -0.25, 0.0935}, -- NodeBox3 | ||||
| 		}, | ||||
| 	}, | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		local fdir = node.param2 | ||||
| 		minetest.set_node(pos, { name = "homedecor:toaster", param2 = fdir }) | ||||
| 		return itemstack | ||||
| 	end, | ||||
| 	drop = "homedecor:toaster" | ||||
| }) | ||||
|  | ||||
|  | ||||
| homedecor.register("dishwasher", { | ||||
| 	description = S("Dishwasher"), | ||||
| 	drawtype = "nodebox", | ||||
| 	tiles = { | ||||
| 		"homedecor_dishwasher_top.png", | ||||
| 		"homedecor_dishwasher_bottom.png", | ||||
| 		"homedecor_dishwasher_sides.png", | ||||
| 		"homedecor_dishwasher_sides.png^[transformFX", | ||||
| 		"homedecor_dishwasher_back.png", | ||||
| 		"homedecor_dishwasher_front.png" | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, | ||||
| 			{-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375}, | ||||
| 			{-0.5, -0.5, -0.5, 0.5, 0.1875, 0.1875}, | ||||
| 			{-0.4375, -0.5, -0.5, 0.4375, 0.4375, 0.4375}, | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { type = "regular" }, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	groups = { snappy = 3 }, | ||||
| }) | ||||
|  | ||||
| local materials = { N_("granite"), N_("marble"), N_("steel"), N_("wood") } | ||||
|  | ||||
| for _, m in ipairs(materials) do | ||||
| homedecor.register("dishwasher_"..m, { | ||||
| 	description = S("Dishwasher (@1)", S(m)), | ||||
| 	tiles = { | ||||
| 		"homedecor_kitchen_cabinet_top_"..m..".png", | ||||
| 		"homedecor_dishwasher_bottom.png", | ||||
| 		"homedecor_dishwasher_sides.png", | ||||
| 		"homedecor_dishwasher_sides.png^[transformFX", | ||||
| 		"homedecor_dishwasher_back.png", | ||||
| 		"homedecor_dishwasher_front.png" | ||||
| 	}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| }) | ||||
| end | ||||
| @@ -1,157 +0,0 @@ | ||||
| -- This file supplies Kitchen cabinets and kitchen sink | ||||
|  | ||||
| local S = homedecor_i18n.gettext | ||||
|  | ||||
| local cabinet_sides = "(default_wood.png^[transformR90)^homedecor_kitchen_cabinet_bevel.png" | ||||
| local cabinet_bottom = "(default_wood.png^[colorize:#000000:100)^(homedecor_kitchen_cabinet_bevel.png^[colorize:#46321580)" | ||||
|  | ||||
| local function N_(x) return x end | ||||
|  | ||||
| local counter_materials = { "", N_("granite"), N_("marble"), N_("steel") } | ||||
|  | ||||
| for _, mat in ipairs(counter_materials) do | ||||
|  | ||||
| 	local desc = S("Kitchen Cabinet") | ||||
| 	local material = "" | ||||
|  | ||||
| 	if mat ~= "" then | ||||
| 		desc = S("Kitchen Cabinet (@1 top)", S(mat)) | ||||
| 		material = "_"..mat | ||||
| 	end | ||||
|  | ||||
| 	homedecor.register("kitchen_cabinet"..material, { | ||||
| 		description = desc, | ||||
| 		tiles = { 'homedecor_kitchen_cabinet_top'..material..'.png', | ||||
| 				cabinet_bottom, | ||||
| 				cabinet_sides, | ||||
| 				cabinet_sides, | ||||
| 				cabinet_sides, | ||||
| 				'homedecor_kitchen_cabinet_front.png'}, | ||||
| 		groups = { snappy = 3 }, | ||||
| 		sounds = default.node_sound_wood_defaults(), | ||||
| 		infotext=S("Kitchen Cabinet"), | ||||
| 		inventory = { | ||||
| 			size=24, | ||||
| 			lockable=true, | ||||
| 		}, | ||||
| 	}) | ||||
| end | ||||
|  | ||||
| local kitchen_cabinet_half_box = homedecor.nodebox.slab_y(0.5, 0.5) | ||||
| homedecor.register("kitchen_cabinet_half", { | ||||
| 	description = S('Half-height Kitchen Cabinet (on ceiling)'), | ||||
| 	tiles = { | ||||
| 		cabinet_sides, | ||||
| 		cabinet_bottom, | ||||
| 		cabinet_sides, | ||||
| 		cabinet_sides, | ||||
| 		cabinet_sides, | ||||
| 		'homedecor_kitchen_cabinet_front_half.png' | ||||
| 	}, | ||||
| 	selection_box = kitchen_cabinet_half_box, | ||||
| 	node_box = kitchen_cabinet_half_box, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	infotext=S("Kitchen Cabinet"), | ||||
| 	inventory = { | ||||
| 		size=12, | ||||
| 		lockable=true, | ||||
| 	}, | ||||
| }) | ||||
|  | ||||
| homedecor.register("kitchen_cabinet_with_sink", { | ||||
| 	description = S("Kitchen Cabinet with sink"), | ||||
| 	mesh = "homedecor_kitchen_sink.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_kitchen_sink_top.png", | ||||
| 		"homedecor_kitchen_cabinet_front.png", | ||||
| 		cabinet_sides, | ||||
| 		cabinet_bottom | ||||
| 	}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	infotext=S("Under-sink cabinet"), | ||||
| 	inventory = { | ||||
| 		size=16, | ||||
| 		lockable=true, | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{ -8/16, -8/16, -8/16,  8/16, 6/16,  8/16 }, | ||||
| 			{ -8/16,  6/16, -8/16, -6/16, 8/16,  8/16 }, | ||||
| 			{  6/16,  6/16, -8/16,  8/16, 8/16,  8/16 }, | ||||
| 			{ -8/16,  6/16, -8/16,  8/16, 8/16, -6/16 }, | ||||
| 			{ -8/16,  6/16,  6/16,  8/16, 8/16,  8/16 }, | ||||
| 		} | ||||
| 	}, | ||||
| 	on_destruct = function(pos) | ||||
| 		homedecor.stop_particle_spawner({x=pos.x, y=pos.y+1, z=pos.z}) | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| local cp_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -0.375, -0.5, -0.5, 0.375, -0.3125, 0.3125 } | ||||
| } | ||||
|  | ||||
| homedecor.register("copper_pans", { | ||||
| 	description = S("Copper pans"), | ||||
| 	mesh = "homedecor_copper_pans.obj", | ||||
| 	tiles = { "homedecor_polished_copper.png" }, | ||||
| 	inventory_image = "homedecor_copper_pans_inv.png", | ||||
| 	groups = { snappy=3 }, | ||||
| 	selection_box = cp_cbox, | ||||
| 	walkable = false, | ||||
| 	on_place = minetest.rotate_node | ||||
| }) | ||||
|  | ||||
| local kf_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -2/16, -8/16, 1/16, 2/16, -1/16, 8/16 } | ||||
| } | ||||
|  | ||||
| homedecor.register("kitchen_faucet", { | ||||
| 	mesh = "homedecor_kitchen_faucet.obj", | ||||
| 	tiles = { "homedecor_generic_metal_bright.png" }, | ||||
| 	inventory_image = "homedecor_kitchen_faucet_inv.png", | ||||
| 	description = S("Kitchen Faucet"), | ||||
| 	groups = {snappy=3}, | ||||
| 	selection_box = kf_cbox, | ||||
| 	walkable = false, | ||||
| 	on_rotate = screwdriver.disallow, | ||||
| 	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) | ||||
| 		local below = minetest.get_node_or_nil({x=pos.x, y=pos.y-1, z=pos.z}) | ||||
| 		if below and | ||||
| 		  below.name == "homedecor:sink" or | ||||
| 		  below.name == "homedecor:kitchen_cabinet_with_sink" or | ||||
| 		  below.name == "homedecor:kitchen_cabinet_with_sink_locked" then | ||||
| 			local particledef = { | ||||
| 				outlet      = { x = 0, y = -0.19, z = 0.13 }, | ||||
| 				velocity_x  = { min = -0.05, max = 0.05 }, | ||||
| 				velocity_y  = -0.3, | ||||
| 				velocity_z  = { min = -0.1,  max = 0 }, | ||||
| 				spread      = 0 | ||||
| 			} | ||||
| 			homedecor.start_particle_spawner(pos, node, particledef, "homedecor_faucet") | ||||
| 		end | ||||
| 		return itemstack | ||||
| 	end, | ||||
| 	on_destruct = homedecor.stop_particle_spawner | ||||
| }) | ||||
|  | ||||
| homedecor.register("paper_towel", { | ||||
| 	mesh = "homedecor_paper_towel.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_quilted_paper.png", | ||||
| 		"default_wood.png" | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_paper_towel_inv.png", | ||||
| 	description = S("Paper towels"), | ||||
| 	groups = { snappy=3 }, | ||||
| 	walkable = false, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { -0.4375, 0.125, 0.0625, 0.4375, 0.4375, 0.5 } | ||||
| 	}, | ||||
| }) | ||||
| @@ -1,61 +0,0 @@ | ||||
| -- laundry devices | ||||
|  | ||||
| homedecor.register("washing_machine", { | ||||
| 	description = "Washing Machine", | ||||
| 	tiles = { | ||||
| 		"homedecor_washing_machine_top.png", | ||||
| 		"homedecor_washing_machine_bottom.png", | ||||
| 		"homedecor_washing_machine_sides.png", | ||||
| 		"homedecor_washing_machine_sides.png^[transformFX", | ||||
| 		"homedecor_washing_machine_back.png", | ||||
| 		"homedecor_washing_machine_front.png" | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, -0.5, 0.5, 0.375, 0.375}, | ||||
| 			{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5}, | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { type = "regular" }, | ||||
| 	groups = { snappy = 3 }, | ||||
| }) | ||||
|  | ||||
| homedecor.register("dryer", { | ||||
| 	description = "Tumble dryer", | ||||
| 	tiles = { | ||||
| 		"homedecor_dryer_top.png", | ||||
| 		"homedecor_dryer_bottom.png", | ||||
| 		"homedecor_dryer_sides.png", | ||||
| 		"homedecor_dryer_sides.png^[transformFX", | ||||
| 		"homedecor_dryer_back.png", | ||||
| 		"homedecor_dryer_front.png" | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = { | ||||
| 			{-0.5, -0.5, -0.5, 0.5, 0.375, 0.375}, | ||||
| 			{-0.5, -0.5, 0.3125, 0.5, 0.5, 0.5}, | ||||
| 		} | ||||
| 	}, | ||||
| 	selection_box = { type = "regular" }, | ||||
| 	groups = { snappy = 3 }, | ||||
| }) | ||||
|  | ||||
| local ib_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -6/16, -8/16, -4/16, 17/16, 4/16, 4/16 } | ||||
| } | ||||
|  | ||||
| homedecor.register("ironing_board", { | ||||
| 	description = "Ironing board", | ||||
| 	mesh = "homedecor_ironing_board.obj", | ||||
| 	tiles = { | ||||
| 		"wool_grey.png", | ||||
| 		{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey }, | ||||
| 	}, | ||||
| 	expand = {right = "placeholder"}, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	selection_box = ib_cbox, | ||||
| 	collision_box = ib_cbox | ||||
| }) | ||||
| @@ -1,101 +0,0 @@ | ||||
| -- Various kinds of window shutters | ||||
|  | ||||
| local S = homedecor_i18n.gettext | ||||
|  | ||||
| local shutters = { | ||||
| 	"mahogany", | ||||
| 	"red", | ||||
| 	"yellow", | ||||
| 	"forest_green", | ||||
| 	"light_blue", | ||||
| 	"violet", | ||||
| 	"black", | ||||
| 	"dark_grey", | ||||
| 	"grey", | ||||
| 	"white", | ||||
| } | ||||
|  | ||||
| local shutter_cbox = { | ||||
| 	type = "wallmounted", | ||||
| 	wall_top =		{ -0.5,  0.4375, -0.5,  0.5,     0.5,    0.5 }, | ||||
| 	wall_bottom =	{ -0.5, -0.5,    -0.5,  0.5,    -0.4375, 0.5 }, | ||||
| 	wall_side =		{ -0.5, -0.5,    -0.5, -0.4375,  0.5,    0.5 } | ||||
| } | ||||
|  | ||||
| local inv = "homedecor_window_shutter_inv.png^[colorize:#a87034:150" | ||||
|  | ||||
| homedecor.register("shutter", { | ||||
| 	mesh = "homedecor_window_shutter.obj", | ||||
| 	tiles = { | ||||
| 		{ name = "homedecor_window_shutter.png", color = 0xffa87034 } | ||||
| 	}, | ||||
| 	description = S("Wooden Shutter"), | ||||
| 	inventory_image = inv, | ||||
| 	wield_image = inv, | ||||
| 	paramtype2 = "colorwallmounted", | ||||
| 	palette = "unifieddyes_palette_colorwallmounted.png", | ||||
| 	airbrush_replacement_node = "homedecor:shutter_colored", | ||||
| 	groups = { snappy = 3, ud_param2_colorable = 1 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	selection_box = shutter_cbox, | ||||
| 	node_box = shutter_cbox, | ||||
| 	after_place_node = function(pos, placer, itemstack, pointed_thing) | ||||
| 		unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| homedecor.register("shutter_colored", { | ||||
| 	mesh = "homedecor_window_shutter.obj", | ||||
| 	tiles = { "homedecor_window_shutter.png" }, | ||||
| 	description = S("Wooden Shutter"), | ||||
| 	inventory_image = "homedecor_window_shutter_inv.png", | ||||
| 	wield_image = "homedecor_window_shutter_inv.png", | ||||
| 	paramtype2 = "colorwallmounted", | ||||
| 	palette = "unifieddyes_palette_colorwallmounted.png", | ||||
| 	groups = { snappy = 3 , not_in_creative_inventory = 1, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	selection_box = shutter_cbox, | ||||
| 	node_box = shutter_cbox, | ||||
| 	after_place_node = function(pos, placer, itemstack, pointed_thing) | ||||
| 		unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing) | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_alias("homedecor:shutter_purple", "homedecor:shutter_violet") | ||||
| minetest.register_alias("homedecor:shutter_oak", "homedecor:shutter") | ||||
|  | ||||
| -- convert to param2 coloring | ||||
|  | ||||
| homedecor.old_shutter_nodes = {} | ||||
|  | ||||
| for _, color in ipairs(shutters) do | ||||
| 	table.insert(homedecor.old_shutter_nodes, "homedecor:shutter_"..color) | ||||
| end | ||||
|  | ||||
| minetest.register_lbm({ | ||||
| 	name = "homedecor:convert_shutters", | ||||
| 	label = "Convert shutter static nodes to use param2 color", | ||||
| 	run_at_every_load = false, | ||||
| 	nodenames = homedecor.old_shutter_nodes, | ||||
| 	action = function(pos, node) | ||||
| 		local name = node.name | ||||
| 		local color = string.sub(name, string.find(name, "_") + 1) | ||||
|  | ||||
| 		if color == "mahogany" then | ||||
| 			color = "dark_red" | ||||
| 		elseif color == "forest_green" then | ||||
| 			color = "dark_green" | ||||
| 		elseif color == "light_blue" then | ||||
| 			color = "medium_cyan" | ||||
| 		elseif color == "red" then | ||||
| 			color = "medium_red" | ||||
| 		end | ||||
|  | ||||
| 		local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted") | ||||
| 		local param2 = paletteidx + node.param2 | ||||
|  | ||||
| 		minetest.set_node(pos, { name = "homedecor:shutter_colored", param2 = param2 }) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("dye", "unifieddyes:"..color) | ||||
| 	end | ||||
| }) | ||||
| Before Width: | Height: | Size: 331 B | 
| Before Width: | Height: | Size: 372 B | 
| Before Width: | Height: | Size: 233 B | 
| Before Width: | Height: | Size: 668 B | 
| Before Width: | Height: | Size: 683 B | 
| Before Width: | Height: | Size: 5.8 KiB | 
| @@ -1,3 +1,4 @@ | ||||
| homedecor_common | ||||
| default | ||||
| moreblocks? | ||||
| vessels? | ||||
| moreblocks? | ||||
|   | ||||
							
								
								
									
										6
									
								
								homedecor_bathroom/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| homedecor_common | ||||
| default | ||||
| basic_materials | ||||
| unifieddyes | ||||
| homedecor_i18n | ||||
| building_blocks | ||||
| @@ -1,4 +1,121 @@ | ||||
| 
 | ||||
| local S = homedecor_i18n.gettext | ||||
| 
 | ||||
| minetest.register_node(":homedecor:bathroom_tiles_dark", { | ||||
| 	description = S("Bathroom/kitchen tiles (dark)"), | ||||
| 	tiles = { | ||||
| 		"homedecor_bathroom_tiles_bg.png" | ||||
| 	}, | ||||
| 	overlay_tiles = { | ||||
| 		{ name = "homedecor_bathroom_tiles_fg.png", color = 0xff606060 }, | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette_extended.png", | ||||
| 	groups = {cracky=3, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = unifieddyes.on_construct, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_node(":homedecor:bathroom_tiles_medium", { | ||||
| 	description = S("Bathroom/kitchen tiles (medium)"), | ||||
| 	tiles = { | ||||
| 		"homedecor_bathroom_tiles_bg.png" | ||||
| 	}, | ||||
| 	overlay_tiles = { | ||||
| 		{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffc0c0c0 }, | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette_extended.png", | ||||
| 	groups = {cracky=3, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = unifieddyes.on_construct, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_node(":homedecor:bathroom_tiles_light", { | ||||
| 	description = S("Bathroom/kitchen tiles (light)"), | ||||
| 	tiles = { | ||||
| 		"homedecor_bathroom_tiles_bg.png" | ||||
| 	}, | ||||
| 	overlay_tiles = { | ||||
| 			{ name = "homedecor_bathroom_tiles_fg.png", color = 0xffffffff }, | ||||
| 	}, | ||||
| 	paramtype = "light", | ||||
| 	paramtype2 = "color", | ||||
| 	palette = "unifieddyes_palette_extended.png", | ||||
| 	groups = {cracky=3, ud_param2_colorable = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| 	on_construct = unifieddyes.on_construct, | ||||
| }) | ||||
| 
 | ||||
| local tr_cbox = { | ||||
| 	type = "fixed", | ||||
| 	fixed = { -0.375, -0.3125, 0.25, 0.375, 0.375, 0.5 } | ||||
| } | ||||
| 
 | ||||
| homedecor.register("towel_rod", { | ||||
| 	description = S("Towel rod with towel"), | ||||
| 	mesh = "homedecor_towel_rod.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_generic_terrycloth.png", | ||||
| 		"default_wood.png", | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_towel_rod_inv.png", | ||||
| 	selection_box = tr_cbox, | ||||
| 	walkable = false, | ||||
| 	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3}, | ||||
| 	sounds = default.node_sound_defaults(), | ||||
| }) | ||||
| 
 | ||||
| homedecor.register("medicine_cabinet", { | ||||
| 	description = S("Medicine cabinet"), | ||||
| 	mesh = "homedecor_medicine_cabinet.obj", | ||||
| 	tiles = { | ||||
| 		'default_wood.png', | ||||
| 		'homedecor_medicine_cabinet_mirror.png' | ||||
| 	}, | ||||
| 	inventory_image = "homedecor_medicine_cabinet_inv.png", | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3125, -0.1875, 0.3125, 0.3125, 0.5, 0.5} | ||||
| 	}, | ||||
| 	walkable = false, | ||||
| 	groups = { snappy = 3 }, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| 	on_punch = function(pos, node, puncher, pointed_thing) | ||||
| 		node.name = "homedecor:medicine_cabinet_open" | ||||
| 		minetest.swap_node(pos, node) | ||||
| 	end, | ||||
| 	infotext=S("Medicine cabinet"), | ||||
| 	inventory = { | ||||
| 		size=6, | ||||
| 	}, | ||||
| }) | ||||
| 
 | ||||
| homedecor.register("medicine_cabinet_open", { | ||||
| 	mesh = "homedecor_medicine_cabinet_open.obj", | ||||
| 	tiles = { | ||||
| 		'default_wood.png', | ||||
| 		'homedecor_medicine_cabinet_mirror.png', | ||||
| 		'homedecor_medicine_cabinet_inside.png' | ||||
| 	}, | ||||
| 	selection_box = { | ||||
| 		type = "fixed", | ||||
| 		fixed = {-0.3125, -0.1875, -0.25, 0.3125, 0.5, 0.5} | ||||
| 	}, | ||||
| 	walkable = false, | ||||
| 	groups = { snappy = 3, not_in_creative_inventory=1 }, | ||||
| 	drop = "homedecor:medicine_cabinet", | ||||
| 	on_punch = function(pos, node, puncher, pointed_thing) | ||||
| 		node.name = "homedecor:medicine_cabinet" | ||||
| 		minetest.swap_node(pos, node) | ||||
| 	end, | ||||
| }) | ||||
| 
 | ||||
| -- "Sanitation" related | ||||
| 
 | ||||
| 
 | ||||
| local S = homedecor_i18n.gettext | ||||
| 
 | ||||
| local toilet_sbox = { | ||||
| @@ -18,9 +135,9 @@ homedecor.register("toilet", { | ||||
| 	description = S("Toilet"), | ||||
| 	mesh = "homedecor_toilet_closed.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_marble.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey } | ||||
| 	}, | ||||
| 	selection_box = toilet_sbox, | ||||
| @@ -36,9 +153,9 @@ homedecor.register("toilet", { | ||||
| homedecor.register("toilet_open", { | ||||
| 	mesh = "homedecor_toilet_open.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_marble.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"default_water.png", | ||||
| 		{ name = "homedecor_generic_metal.png", color = homedecor.color_med_grey } | ||||
| 	}, | ||||
| @@ -101,8 +218,8 @@ homedecor.register("sink", { | ||||
| 	description = S("Bathroom Sink"), | ||||
| 	mesh = "homedecor_bathroom_sink.obj", | ||||
| 	tiles = { | ||||
| 		"homedecor_marble.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"default_water.png" | ||||
| 	}, | ||||
| 	inventory_image="homedecor_bathroom_sink_inv.png", | ||||
| @@ -189,7 +306,7 @@ homedecor.register("shower_tray", { | ||||
| 	description = S("Shower Tray"), | ||||
| 	tiles = { | ||||
| 		"forniture_marble_base_ducha_top.png", | ||||
| 		"homedecor_marble.png" | ||||
| 		"building_blocks_marble.png" | ||||
| 	}, | ||||
| 	node_box = { | ||||
| 		type = "fixed", | ||||
| @@ -258,7 +375,7 @@ homedecor.register("bathtub_clawfoot_brass_taps", { | ||||
| 		"homedecor_generic_metal_bright.png", | ||||
| 		"homedecor_generic_metal_bright.png", | ||||
| 		"homedecor_generic_metal_brass.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"homedecor_bathtub_clawfoot_bottom_inside.png", | ||||
| 	}, | ||||
| 	description = S("Bathtub, clawfoot, with brass taps"), | ||||
| @@ -278,7 +395,7 @@ homedecor.register("bathtub_clawfoot_chrome_taps", { | ||||
| 		"homedecor_generic_metal_bright.png", | ||||
| 		"homedecor_generic_metal_bright.png", | ||||
| 		"homedecor_generic_metal_bright.png", | ||||
| 		"homedecor_marble.png", | ||||
| 		"building_blocks_marble.png", | ||||
| 		"homedecor_bathtub_clawfoot_bottom_inside.png", | ||||
| 	}, | ||||
| 	description = S("Bathtub, clawfoot, with chrome taps"), | ||||
| @@ -313,6 +430,8 @@ homedecor.register("bathroom_set", { | ||||
| 	sounds = default.node_sound_glass_defaults(), | ||||
| }) | ||||
| 
 | ||||
| -- aliases | ||||
| 
 | ||||
| minetest.register_alias("3dforniture:toilet", "homedecor:toilet") | ||||
| minetest.register_alias("3dforniture:toilet_open", "homedecor:toilet_open") | ||||
| minetest.register_alias("3dforniture:sink", "homedecor:sink") | ||||
| @@ -327,3 +446,153 @@ minetest.register_alias("taps", "homedecor:taps") | ||||
| minetest.register_alias("shower_tray", "homedecor:shower_tray") | ||||
| minetest.register_alias("shower_head", "homedecor:shower_head") | ||||
| minetest.register_alias("table_lamp", "homedecor:table_lamp_off") | ||||
| 
 | ||||
| -- convert old static nodes | ||||
| 
 | ||||
| homedecor.old_static_bathroom_tiles = { | ||||
| 	"homedecor:tiles_1", | ||||
| 	"homedecor:tiles_2", | ||||
| 	"homedecor:tiles_3", | ||||
| 	"homedecor:tiles_4", | ||||
| 	"homedecor:tiles_red", | ||||
| 	"homedecor:tiles_tan", | ||||
| 	"homedecor:tiles_yellow", | ||||
| 	"homedecor:tiles_green", | ||||
| 	"homedecor:tiles_blue" | ||||
| } | ||||
| 
 | ||||
| local old_to_color = { | ||||
| 	"light_grey", | ||||
| 	"grey", | ||||
| 	"black", | ||||
| 	"black" | ||||
| } | ||||
| 
 | ||||
| minetest.register_lbm({ | ||||
| 	name = ":homedecor:convert_bathroom_tiles", | ||||
| 	label = "Convert bathroom tiles to use param2 color", | ||||
| 	run_at_every_load = false, | ||||
| 	nodenames = homedecor.old_static_bathroom_tiles, | ||||
| 	action = function(pos, node) | ||||
| 		local name = node.name | ||||
| 		local newname = "homedecor:bathroom_tiles_light" | ||||
| 		local a = string.find(name, "_") | ||||
| 		local color = string.sub(name, a + 1) | ||||
| 
 | ||||
| 		if color == "tan" then | ||||
| 			color = "yellow_s50" | ||||
| 		elseif color == "1" or color == "2" or color == "3" or color == "4" then | ||||
| 			if color == "4" then | ||||
| 				newname = "homedecor:bathroom_tiles_medium" | ||||
| 			end | ||||
| 			color = old_to_color[tonumber(color)] | ||||
| 		elseif color ~= "yellow" then | ||||
| 			color = color.."_s50" | ||||
| 		end | ||||
| 
 | ||||
| 		local paletteidx = unifieddyes.getpaletteidx("unifieddyes:"..color, "extended") | ||||
| 
 | ||||
| 		minetest.set_node(pos, { name = newname, param2 = paletteidx }) | ||||
| 		local meta = minetest.get_meta(pos) | ||||
| 		meta:set_string("dye", "unifieddyes:"..color) | ||||
| 		meta:set_string("palette", "ext") | ||||
| 	end | ||||
| }) | ||||
| 
 | ||||
| -- crafting | ||||
| 
 | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:towel_rod", | ||||
|     recipe = { | ||||
| 		{ "group:wood", "group:stick", "group:wood" }, | ||||
| 		{ "", "building_blocks:terrycloth_towel", "" }, | ||||
|     }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:toilet_paper", | ||||
|     recipe = { | ||||
| 		{ "", "default:paper", "default:paper" }, | ||||
| 		{ "group:wood", "group:stick", "default:paper" }, | ||||
| 		{ "", "default:paper", "default:paper" }, | ||||
|     }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:medicine_cabinet", | ||||
|     recipe = { | ||||
| 		{ "group:stick", "default:glass", "group:stick" }, | ||||
| 		{ "group:stick", "default:glass", "group:stick" }, | ||||
| 		{ "group:stick", "default:glass", "group:stick" } | ||||
|     }, | ||||
| }) | ||||
| 
 | ||||
| 
 | ||||
| -- bathroom/kitchen tiles | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 		output = "homedecor:bathroom_tiles_light 4", | ||||
| 		recipe = { | ||||
| 			{ "group:marble", "group:marble", "" }, | ||||
| 			{ "group:marble", "group:marble", "dye:white" } | ||||
| 		}, | ||||
| }) | ||||
| 
 | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:bathroom_tiles_light", | ||||
| 	palette = "extended", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:bathroom_tiles_light", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 		output = "homedecor:bathroom_tiles_medium 4", | ||||
| 		recipe = { | ||||
| 			{ "group:marble", "group:marble", "" }, | ||||
| 			{ "group:marble", "group:marble", "dye:grey" } | ||||
| 		}, | ||||
| }) | ||||
| 
 | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:bathroom_tiles_medium", | ||||
| 	palette = "extended", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:bathroom_tiles_medium", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 		output = "homedecor:bathroom_tiles_dark 4", | ||||
| 		recipe = { | ||||
| 			{ "group:marble", "group:marble", "" }, | ||||
| 			{ "group:marble", "group:marble", "dye:dark_grey" } | ||||
| 		}, | ||||
| }) | ||||
| 
 | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:bathroom_tiles_dark", | ||||
| 	palette = "extended", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:bathroom_tiles_dark", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
| 	output = "homedecor:bathroom_set", | ||||
| 	recipe = { | ||||
| 		{ "", "homedecor:glass_table_small_round", "" }, | ||||
| 		{ "basic_materials:plastic_sheet", "homedecor:glass_table_small_round", "basic_materials:plastic_sheet" }, | ||||
| 		{ "group:stick", "basic_materials:plastic_sheet", "group:stick" } | ||||
| 	}, | ||||
| }) | ||||
| Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 5.1 KiB | 
| Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB | 
| Before Width: | Height: | Size: 778 B After Width: | Height: | Size: 778 B | 
| Before Width: | Height: | Size: 531 B After Width: | Height: | Size: 531 B | 
| Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB | 
| Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 368 B | 
| Before Width: | Height: | Size: 205 B After Width: | Height: | Size: 205 B | 
| Before Width: | Height: | Size: 430 B After Width: | Height: | Size: 430 B | 
| Before Width: | Height: | Size: 223 B After Width: | Height: | Size: 223 B | 
| Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB | 
| Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 219 B | 
| Before Width: | Height: | Size: 248 B After Width: | Height: | Size: 248 B | 
| Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 245 B | 
| Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 129 B | 
| Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB | 
| Before Width: | Height: | Size: 126 B After Width: | Height: | Size: 126 B | 
| Before Width: | Height: | Size: 580 B After Width: | Height: | Size: 580 B | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB | 
| Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB | 
							
								
								
									
										6
									
								
								homedecor_bedroom/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| homedecor_common | ||||
| default | ||||
| basic_materials | ||||
| unifieddyes | ||||
| homedecor_i18n | ||||
| creative | ||||
| @@ -220,7 +220,7 @@ for _, color in ipairs(bedcolors) do | ||||
| end | ||||
| 
 | ||||
| minetest.register_lbm({ | ||||
| 	name = "homedecor:convert_beds", | ||||
| 	name = ":homedecor:convert_beds", | ||||
| 	label = "Convert homedecor static bed nodes to use param2 color", | ||||
| 	run_at_every_load = false, | ||||
| 	nodenames = homedecor.old_bed_nodes, | ||||
| @@ -265,3 +265,126 @@ minetest.register_lbm({ | ||||
| 		meta:set_string("dye", "unifieddyes:"..color) | ||||
| 	end | ||||
| }) | ||||
| 
 | ||||
| -- crafting | ||||
| 
 | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
|         output = "homedecor:nightstand_oak_one_drawer", | ||||
|         recipe = { | ||||
|                 { "homedecor:drawer_small" }, | ||||
|                 { "group:wood" }, | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|         type = "fuel", | ||||
|         recipe = "homedecor:nightstand_oak_one_drawer", | ||||
|         burntime = 30, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
|         output = "homedecor:nightstand_oak_two_drawers", | ||||
|         recipe = { | ||||
|                 { "homedecor:drawer_small" }, | ||||
|                 { "homedecor:drawer_small" }, | ||||
|                 { "group:wood" }, | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
|         output = "homedecor:nightstand_oak_two_drawers", | ||||
|         recipe = { | ||||
|                 { "homedecor:nightstand_oak_one_drawer" }, | ||||
|                 { "homedecor:drawer_small" }, | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|         type = "fuel", | ||||
|         recipe = "homedecor:nightstand_oak_two_drawers", | ||||
|         burntime = 30, | ||||
| }) | ||||
| 
 | ||||
| -- | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 	type = "shapeless", | ||||
|         output = "homedecor:nightstand_mahogany_one_drawer", | ||||
|         recipe = { | ||||
|                 "homedecor:nightstand_oak_one_drawer", | ||||
|                 "dye:brown", | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|         type = "fuel", | ||||
|         recipe = "homedecor:nightstand_mahogany_one_drawer", | ||||
|         burntime = 30, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 	type = "shapeless", | ||||
|         output = "homedecor:nightstand_mahogany_two_drawers", | ||||
|         recipe = { | ||||
|                 "homedecor:nightstand_oak_two_drawers", | ||||
|                 "dye:brown", | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|         type = "fuel", | ||||
|         recipe = "homedecor:nightstand_mahogany_two_drawers", | ||||
|         burntime = 30, | ||||
| }) | ||||
| 
 | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 	output = "homedecor:bed_regular", | ||||
| 	recipe = { | ||||
| 		{ "group:stick", "", "group:stick" }, | ||||
| 		{ "wool:white", "wool:white", "wool:white" }, | ||||
| 		{ "group:wood", "", "group:wood" }, | ||||
| 	}, | ||||
| }) | ||||
| 
 | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:bed_regular", | ||||
| 	palette = "wallmounted", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:bed_regular", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
| 	output = "homedecor:bed_kingsize", | ||||
| 	recipe = { | ||||
| 		{ "homedecor:bed_regular", "homedecor:bed_regular" } | ||||
| 	}, | ||||
| }) | ||||
| 
 | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:bed_kingsize", | ||||
| 	palette = "wallmounted", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:bed_kingsize", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| unifieddyes.register_color_craft({ | ||||
| 	output = "homedecor:bed_kingsize", | ||||
| 	palette = "wallmounted", | ||||
| 	type = "shapeless", | ||||
| 	neutral_node = "homedecor:bed_regular", | ||||
| 	recipe = { | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"NEUTRAL_NODE", | ||||
| 		"MAIN_DYE" | ||||
| 	} | ||||
| }) | ||||
| Before Width: | Height: | Size: 240 B After Width: | Height: | Size: 240 B | 
| Before Width: | Height: | Size: 471 B After Width: | Height: | Size: 471 B | 
| Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB | 
| Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB | 
| Before Width: | Height: | Size: 892 B After Width: | Height: | Size: 892 B | 
| Before Width: | Height: | Size: 709 B After Width: | Height: | Size: 709 B | 
| Before Width: | Height: | Size: 549 B After Width: | Height: | Size: 549 B | 
| Before Width: | Height: | Size: 681 B After Width: | Height: | Size: 681 B | 
| Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 658 B | 
| Before Width: | Height: | Size: 949 B After Width: | Height: | Size: 949 B | 
| Before Width: | Height: | Size: 731 B After Width: | Height: | Size: 731 B | 
| Before Width: | Height: | Size: 675 B After Width: | Height: | Size: 675 B | 
| Before Width: | Height: | Size: 742 B After Width: | Height: | Size: 742 B | 
| Before Width: | Height: | Size: 714 B After Width: | Height: | Size: 714 B | 
							
								
								
									
										6
									
								
								homedecor_books/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| homedecor_common | ||||
| default | ||||
| unifieddyes | ||||
| homedecor_i18n | ||||
| creative | ||||
|  | ||||
| @@ -183,5 +183,30 @@ minetest.register_on_player_receive_fields(function(player, form_name, fields) | ||||
| 	return true | ||||
| end) | ||||
| 
 | ||||
| -- crafting | ||||
| 
 | ||||
| 
 | ||||
| local bookcolors = { | ||||
| 	"red", | ||||
| 	"green", | ||||
| 	"blue", | ||||
| 	"violet", | ||||
| 	"grey", | ||||
| 	"brown" | ||||
| } | ||||
| 
 | ||||
| for _, color in ipairs(bookcolors) do | ||||
| 	minetest.register_craft({ | ||||
| 		type = "shapeless", | ||||
| 		output = "homedecor:book_"..color, | ||||
| 		recipe = { | ||||
| 			"dye:"..color, | ||||
| 			"default:book" | ||||
| 		}, | ||||
| 	}) | ||||
| end | ||||
| 
 | ||||
| -- aliases | ||||
| 
 | ||||
| minetest.register_alias("homedecor:book", "homedecor:book_grey") | ||||
| minetest.register_alias("homedecor:book_open", "homedecor:book_open_grey") | ||||
| Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB | 
| Before Width: | Height: | Size: 127 B After Width: | Height: | Size: 127 B | 
| Before Width: | Height: | Size: 780 B After Width: | Height: | Size: 780 B | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB | 
| Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB | 
| Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB | 
							
								
								
									
										5
									
								
								homedecor_climate_control/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | ||||
| homedecor_common | ||||
| default | ||||
| basic_materials | ||||
| homedecor_i18n | ||||
| building_blocks? | ||||
| @@ -16,7 +16,7 @@ homedecor.register("air_conditioner", { | ||||
| 
 | ||||
| -- fans | ||||
| 
 | ||||
| minetest.register_entity("homedecor:mesh_desk_fan", { | ||||
| minetest.register_entity(":homedecor:mesh_desk_fan", { | ||||
| 	collisionbox = homedecor.nodebox.null, | ||||
| 	visual = "mesh", | ||||
| 	mesh = "homedecor_desk_fan.b3d", | ||||
| @@ -141,3 +141,69 @@ homedecor.register("radiator", { | ||||
| 	collision_box = r_cbox, | ||||
| 	sounds = default.node_sound_wood_defaults(), | ||||
| }) | ||||
| 
 | ||||
| -- crafting | ||||
| 
 | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:air_conditioner", | ||||
|     recipe = { | ||||
| 		{ "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, | ||||
| 		{ "default:steel_ingot", "homedecor:fan_blades", "basic_materials:motor" }, | ||||
| 		{ "default:steel_ingot", "basic_materials:motor", "default:steel_ingot" }, | ||||
|     }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:air_conditioner", | ||||
|     recipe = { | ||||
| 		{ "default:steel_ingot", "building_blocks:grate", "default:steel_ingot" }, | ||||
| 		{ "default:steel_ingot", "basic_materials:motor", "default:steel_ingot" }, | ||||
| 		{ "default:steel_ingot", "basic_materials:motor", "default:steel_ingot" }, | ||||
|     }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:ceiling_fan", | ||||
|     recipe = { | ||||
| 		{ "basic_materials:motor" }, | ||||
| 		{ "homedecor:fan_blades" }, | ||||
| 		{ "homedecor:glowlight_small_cube" } | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft({ | ||||
|     output = "homedecor:ceiling_fan", | ||||
|     recipe = { | ||||
| 		{ "basic_materials:motor" }, | ||||
| 		{ "homedecor:fan_blades" }, | ||||
| 		{ "homedecor:glowlight_small_cube" } | ||||
| 	} | ||||
| }) | ||||
| 
 | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
|         output = "homedecor:desk_fan", | ||||
|         recipe = { | ||||
| 			{"default:steel_ingot", "homedecor:fan_blades", "basic_materials:motor"}, | ||||
| 			{"", "default:steel_ingot", ""} | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
|         output = "homedecor:space_heater", | ||||
|         recipe = { | ||||
| 			{"basic_materials:plastic_sheet", "basic_materials:heating_element", "basic_materials:plastic_sheet"}, | ||||
| 			{"basic_materials:plastic_sheet", "homedecor:fan_blades", "basic_materials:motor"}, | ||||
| 			{"basic_materials:plastic_sheet", "basic_materials:heating_element", "basic_materials:plastic_sheet"} | ||||
|         }, | ||||
| }) | ||||
| 
 | ||||
| minetest.register_craft( { | ||||
|         output = "homedecor:radiator", | ||||
|         recipe = { | ||||
| 			{ "default:steel_ingot", "basic_materials:heating_element", "default:steel_ingot" }, | ||||
| 			{ "basic_materials:ic", "basic_materials:heating_element", "" }, | ||||
| 			{ "default:steel_ingot", "basic_materials:heating_element", "default:steel_ingot" } | ||||
|         }, | ||||
| }) | ||||
| Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 178 B | 
| Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB | 
| Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB | 
| Before Width: | Height: | Size: 140 B After Width: | Height: | Size: 140 B | 
| Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB | 
| Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 266 B | 
| Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 165 B After Width: | Height: | Size: 165 B | 
| Before Width: | Height: | Size: 350 B After Width: | Height: | Size: 350 B | 
| Before Width: | Height: | Size: 450 B After Width: | Height: | Size: 450 B | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 347 B After Width: | Height: | Size: 347 B | 
| Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 300 B | 
| Before Width: | Height: | Size: 298 B After Width: | Height: | Size: 298 B | 
| Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB | 
							
								
								
									
										6
									
								
								homedecor_clocks/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| homedecor_common | ||||
| default | ||||
| basic_materials | ||||
| dye | ||||
| homedecor_i18n | ||||
| building_blocks? | ||||