local carpet_proto = {
	drawtype = "nodebox",
	paramtype = "light",
	paramtype2 = "facedir",
	node_box = {
		type = "fixed",
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5}
	},
	groups = {
		snappy = 2,
		flammable = 3,
		oddly_breakable_by_hand = 3,
		choppy = 2,
		carpet = 1,
	}
}

-- Register the carpet and recipe using material
--    material - already registered material item the textures and sounds applied from
--    def - optional additional - or overriding data passed to minetest.register_node()
carpets = {}

function carpets.register(material, def)
	local node = table.copy(carpet_proto)
	if def then
		for k,v in pairs(def) do
			node[k] = v
		end
	end

	local material_def = minetest.registered_nodes[material]
	node.description = node.description or material_def.description.." carpet"
	node.sounds = table.copy(node.sounds or material_def.sounds or default.node_sound_defaults())
	node.groups = table.copy(node.groups)

	if node.tiles then
		node.tiles = table.copy(node.tiles)
	elseif material_def.tiles[6] then
		node.tiles = {material_def.tiles[6]}
	else
		node.tiles = table.copy(material_def.tiles)
	end

	local name = "carpet:" .. (node.name or material:gsub(":", "_"))
	node.name = nil

	minetest.register_node(":" .. name, node)

	minetest.register_craft({
		output = name .. " 32",
		recipe = {
			{"group:wool", "group:wool", "group:wool"},
			{"group:wool", material, "group:wool"}
		}
	})
end
