forked from mtcontrib/homedecor_modpack
		
	
		
			
				
	
	
		
			237 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			237 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
 | 
						|
local S = homedecor_i18n.gettext
 | 
						|
 | 
						|
local table_colors = {
 | 
						|
	{ "",           S("Table"),           homedecor.plain_wood },
 | 
						|
	{ "_mahogany",  S("Mahogany Table"),  homedecor.mahogany_wood },
 | 
						|
	{ "_white",     S("White Table"),     homedecor.white_wood }
 | 
						|
}
 | 
						|
 | 
						|
for _, t in ipairs(table_colors) do
 | 
						|
	local suffix, desc, texture = unpack(t)
 | 
						|
 | 
						|
	homedecor.register("table"..suffix, {
 | 
						|
		description = desc,
 | 
						|
		tiles = { texture },
 | 
						|
		node_box = {
 | 
						|
			type = "fixed",
 | 
						|
			fixed = {
 | 
						|
				{ -0.4, -0.5, -0.4, -0.3,  0.4, -0.3 },
 | 
						|
				{  0.3, -0.5, -0.4,  0.4,  0.4, -0.3 },
 | 
						|
				{ -0.4, -0.5,  0.3, -0.3,  0.4,  0.4 },
 | 
						|
				{  0.3, -0.5,  0.3,  0.4,  0.4,  0.4 },
 | 
						|
				{ -0.5,  0.4, -0.5,  0.5,  0.5,  0.5 },
 | 
						|
				{ -0.4, -0.2, -0.3, -0.3, -0.1,  0.3 },
 | 
						|
				{  0.3, -0.2, -0.4,  0.4, -0.1,  0.3 },
 | 
						|
				{ -0.3, -0.2, -0.4,  0.4, -0.1, -0.3 },
 | 
						|
				{ -0.3, -0.2,  0.3,  0.3, -0.1,  0.4 },
 | 
						|
			},
 | 
						|
		},
 | 
						|
		groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
 | 
						|
		sounds = default.node_sound_wood_defaults(),
 | 
						|
	})
 | 
						|
end
 | 
						|
 | 
						|
local chaircolors = {
 | 
						|
	{ "",           S("plain") },
 | 
						|
	{ "black",      S("black") },
 | 
						|
	{ "red",        S("red") },
 | 
						|
	{ "pink",       S("pink") },
 | 
						|
	{ "violet",     S("violet") },
 | 
						|
	{ "blue",       S("blue") },
 | 
						|
	{ "dark_green", S("dark green") },
 | 
						|
}
 | 
						|
 | 
						|
local kc_cbox = {
 | 
						|
	type = "fixed",
 | 
						|
	fixed = { -0.3125, -0.5, -0.3125, 0.3125, 0.5, 0.3125 },
 | 
						|
}
 | 
						|
 | 
						|
local ac_cbox = {
 | 
						|
	type = "fixed",
 | 
						|
	fixed = {
 | 
						|
		{-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
 | 
						|
		{-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
homedecor.register("kitchen_chair_wood", {
 | 
						|
	description = S("Kitchen chair"),
 | 
						|
	mesh = "homedecor_kitchen_chair.obj",
 | 
						|
	tiles = {
 | 
						|
		homedecor.plain_wood,
 | 
						|
		homedecor.plain_wood
 | 
						|
	},
 | 
						|
	inventory_image = "homedecor_chair_wood_inv.png",
 | 
						|
	paramtype2 = "wallmounted",
 | 
						|
	selection_box = kc_cbox,
 | 
						|
	collision_box = kc_cbox,
 | 
						|
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
 | 
						|
	sounds = default.node_sound_wood_defaults(),
 | 
						|
	after_place_node = homedecor.fix_rotation_nsew,
 | 
						|
	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
						|
		pos.y = pos.y+0 -- where do I put my ass ?
 | 
						|
		homedecor.sit(pos, node, clicker)
 | 
						|
		return itemstack
 | 
						|
	end
 | 
						|
})
 | 
						|
 | 
						|
homedecor.register("kitchen_chair_padded", {
 | 
						|
	description = S("Kitchen chair"),
 | 
						|
	mesh = "homedecor_kitchen_chair.obj",
 | 
						|
	tiles = {
 | 
						|
		homedecor.plain_wood,
 | 
						|
		"wool_white.png",
 | 
						|
	},
 | 
						|
	inventory_image = "homedecor_chair_padded_inv.png",
 | 
						|
	paramtype2 = "colorwallmounted",
 | 
						|
	palette = "unifieddyes_palette_colorwallmounted.png",
 | 
						|
	selection_box = kc_cbox,
 | 
						|
	collision_box = kc_cbox,
 | 
						|
	groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, ud_param2_colorable = 1},
 | 
						|
	sounds = default.node_sound_wood_defaults(),
 | 
						|
	after_place_node = homedecor.fix_rotation_nsew,
 | 
						|
	after_dig_node = unifieddyes.after_dig_node,
 | 
						|
	on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
 | 
						|
		local itemname = itemstack:get_name()
 | 
						|
		pos.y = pos.y+0 -- where do I put my ass ?
 | 
						|
		homedecor.sit(pos, node, clicker)
 | 
						|
		return itemstack
 | 
						|
	end
 | 
						|
})
 | 
						|
 | 
						|
homedecor.register("armchair", {
 | 
						|
	description = S("Armchair"),
 | 
						|
	mesh = "forniture_armchair.obj",
 | 
						|
	tiles = {
 | 
						|
		"wool_white.png",
 | 
						|
		{ name = "wool_dark_grey.png", color = 0xffffffff },
 | 
						|
		{ name = "default_wood.png", color = 0xffffffff }
 | 
						|
	},
 | 
						|
	inventory_image = "homedecor_armchair_inv.png",
 | 
						|
	paramtype2 = "colorwallmounted",
 | 
						|
	palette = "unifieddyes_palette_colorwallmounted.png",
 | 
						|
	groups = {snappy=3, ud_param2_colorable = 1},
 | 
						|
	sounds = default.node_sound_wood_defaults(),
 | 
						|
	node_box = ac_cbox,
 | 
						|
	after_place_node = homedecor.fix_rotation_nsew,
 | 
						|
	after_dig_node = unifieddyes.after_dig_node,
 | 
						|
})
 | 
						|
 | 
						|
local ob_cbox = {
 | 
						|
	type = "fixed",
 | 
						|
	fixed = { -0.5, -0.5, 0, 0.5, 0.5, 0.5 }
 | 
						|
}
 | 
						|
 | 
						|
minetest.register_node(":homedecor:openframe_bookshelf", {
 | 
						|
	description = S("Bookshelf (open-frame)"),
 | 
						|
	drawtype = "mesh",
 | 
						|
	mesh = "homedecor_openframe_bookshelf.obj",
 | 
						|
	tiles = {
 | 
						|
		"homedecor_openframe_bookshelf_books.png",
 | 
						|
		"default_wood.png"
 | 
						|
	},
 | 
						|
	groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
 | 
						|
	sounds = default.node_sound_wood_defaults(),
 | 
						|
	paramtype = "light",
 | 
						|
	paramtype2 = "facedir",
 | 
						|
	selection_box = ob_cbox,
 | 
						|
	collision_box = ob_cbox,
 | 
						|
})
 | 
						|
 | 
						|
homedecor.register("wall_shelf", {
 | 
						|
	description = S("Wall Shelf"),
 | 
						|
	tiles = {
 | 
						|
		"homedecor_wood_table_large_edges.png",
 | 
						|
	},
 | 
						|
	groups = { snappy = 3 },
 | 
						|
	sounds = default.node_sound_wood_defaults(),
 | 
						|
	node_box = {
 | 
						|
		type = "fixed",
 | 
						|
		fixed = {
 | 
						|
			{-0.5, 0.4, 0.47, 0.5, 0.47, 0.5},
 | 
						|
			{-0.5, 0.47, -0.1875, 0.5, 0.5, 0.5}
 | 
						|
		}
 | 
						|
	}
 | 
						|
})
 | 
						|
 | 
						|
-- Aliases for 3dforniture mod.
 | 
						|
 | 
						|
minetest.register_alias("3dforniture:table", "homedecor:table")
 | 
						|
minetest.register_alias("3dforniture:chair", "homedecor:chair")
 | 
						|
minetest.register_alias("3dforniture:armchair", "homedecor:armchair_black")
 | 
						|
minetest.register_alias("homedecor:armchair", "homedecor:armchair_black")
 | 
						|
 | 
						|
minetest.register_alias('table', 'homedecor:table')
 | 
						|
minetest.register_alias('chair', 'homedecor:chair')
 | 
						|
minetest.register_alias('armchair', 'homedecor:armchair')
 | 
						|
 | 
						|
-- conversion to param2 colorization
 | 
						|
 | 
						|
homedecor.old_static_chairs = {}
 | 
						|
 | 
						|
for _, color in ipairs(lrfurn.colors) do
 | 
						|
	table.insert(homedecor.old_static_chairs, "homedecor:chair_"..color)
 | 
						|
	table.insert(homedecor.old_static_chairs, "homedecor:armchair_"..color)
 | 
						|
end
 | 
						|
table.insert(homedecor.old_static_chairs, "homedecor:chair")
 | 
						|
 | 
						|
minetest.register_lbm({
 | 
						|
	name = "homedecor:convert_chairs",
 | 
						|
	label = "Convert homedecor chairs to use param2 color",
 | 
						|
	run_at_every_load = true,
 | 
						|
	nodenames = homedecor.old_static_chairs,
 | 
						|
	action = function(pos, node)
 | 
						|
		local name = node.name
 | 
						|
		local paletteidx = 0
 | 
						|
		local color
 | 
						|
		local a,b = string.find(name, "_")
 | 
						|
 | 
						|
		if a then
 | 
						|
			color = string.sub(name, a+1)
 | 
						|
 | 
						|
			if color == "blue" then
 | 
						|
				color = "medium_blue"
 | 
						|
			elseif color == "violet" then
 | 
						|
				color = "medium_violet"
 | 
						|
			elseif color == "red" then
 | 
						|
				color = "medium_red"
 | 
						|
			elseif color == "black" then
 | 
						|
				color = "dark_grey"
 | 
						|
			end
 | 
						|
 | 
						|
			paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
 | 
						|
		end
 | 
						|
 | 
						|
		local old_fdir = math.floor(node.param2 % 32)
 | 
						|
		local new_fdir = 3
 | 
						|
 | 
						|
		if old_fdir == 0 then
 | 
						|
			new_fdir = 3
 | 
						|
		elseif old_fdir == 1 then
 | 
						|
			new_fdir = 4
 | 
						|
		elseif old_fdir == 2 then
 | 
						|
			new_fdir = 2
 | 
						|
		elseif old_fdir == 3 then
 | 
						|
			new_fdir = 5
 | 
						|
		end
 | 
						|
 | 
						|
		local param2 = paletteidx + new_fdir
 | 
						|
		local newname = "homedecor:armchair"
 | 
						|
 | 
						|
		print(name, dump(a), dump(b), dump(color).."("..dump(paletteidx)..")", dump(param2))
 | 
						|
 | 
						|
		if node.name == "homedecor:chair" then
 | 
						|
			newname = "homedecor:kitchen_chair_wood"
 | 
						|
		elseif string.find(node.name, "homedecor:chair_") then
 | 
						|
			newname = "homedecor:kitchen_chair_padded"
 | 
						|
		end
 | 
						|
 | 
						|
		minetest.set_node(pos, { name = newname, param2 = param2 })
 | 
						|
		local meta = minetest.get_meta(pos)
 | 
						|
		if color then
 | 
						|
			meta:set_string("dye", "unifieddyes:"..color)
 | 
						|
		end
 | 
						|
	end
 | 
						|
})
 |