# Wearables

Wearables são os [entities](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md) que contêm itens para os jogadores usarem e personalizarem seus avatares.

O `wearables` campo no [perfil](https://github.com/decentraland/docs/blob/main/contributor/entity-types/profiles/README.md) de um jogador contém uma lista de ponteiros para os itens que ele está usando atualmente.

Todo wearable pertence a uma *categoria*, indicando o lugar que ocupa no corpo do avatar, e pode esconder ou substituir outras categorias (por exemplo, um vestido longo pode ser usado como roupa superior mas cobrir totalmente as pernas).

Existem 18 categorias de wearables, referenciadas em vários campos de metadados: `body_shape`, `hair`, `eyes`, `eyebrows`, `facial_hair`, `mouth`, `upper_body`, `lower_body`, `feet`, `hat`, `helmet`, `mask`, `tiara`, `top_head`, `earring`, `eyewear`, `skin` e `hands_wear`.

Entidades de wearables incluem arquivos em formato GLB para diferentes body shapes.

### Pointers <a href="#pointers" id="pointers"></a>

Wearables têm exatamente um associado [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md), que indica a [collection](https://github.com/decentraland/docs/blob/main/contributor/entity-types/collections/README.md) à qual pertencem e seu identificador dentro dela.

Quando o wearable é um ativo on-chain, o ponteiro é um URN desta forma:

```
urn:decentraland:<blockchain>:collections-v2:<collection address>:<item index>
```

Para ilustrar, o `pointers` array para um wearable on-chain se parece com isto:

```json
{
  "pointers": [
    "urn:decentraland:matic:collections-v2:0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5:0"
  ],
  // ... other entity properties
}
```

Quando o wearable é um ativo off-chain, como os wearables padrão para novos avatares, ele terá esta forma:

```
urn:decentraland:off-chain:<collection>:<item name>
```

A collection nesse caso é um nome, não um endereço, e o identificador do item também é um nome em vez de um índice.

O `pointers` array para um wearable off-chain tem esta aparência:

```json
{
  "pointers": [
    "urn:decentraland:off-chain:base-avatars:BaseFemale"
  ],
  // ... other entity properties
}
```

### Campos de Metadata

Wearables compartilham a maioria de seus campos básicos com [emotes](https://github.com/decentraland/docs/blob/main/contributor/entity-types/emotes/README.md). O `data` property é onde a informação específica do wearable está localizada.

| Campo               | Valor                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                | O [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) que resolve (ou costumava resolver) para este wearable. |
| `name`              | O título exibido para este wearable em um [collection](https://github.com/decentraland/docs/blob/main/contributor/collections/README.md).          |
| `description`       | Uma descrição estendida para este wearable.                                                                                                        |
| `image`             | O [nome de arquivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) de uma imagem para este wearable. |
| `thumbnail`         | O [nome de arquivo interno](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) de uma versão 256x256 da `image`. |
| `rarity`            | Um de `common`, `uncommon`, `rare`, `epic`, `legendary`, `exotic`, `mythic` ou `unique`.                                                           |
| `i18n`              | Um array de traduções para o campo `name` .                                                                                                        |
| `collectionAddress` | O endereço Ethereum da collection que contém este wearable.                                                                                        |
| `metrics`           | Algumas medidas úteis sobre as animações (ver abaixo).                                                                                             |
| `data`              | Os metadados estendidos para este wearable (ver abaixo).                                                                                           |

Em forma JSON típica:

```json
{
  "id": "urn:decentraland:matic:collections-v2:0x11a6879861f36cbad632b4e7226816a16139fb33:0",
  "name": "Pretty Dress",
  "description": "Very nice to wear",
  "image": "image.png",
  "thumbnail": "thumbnail.png",
  "rarity": "uncommon",
  "i18n": [
    { "code": "es", "text": "Vestido Lindo" }
  ],
  "collectionAddress": "0x11a6879861f36cbad632b4e7226816a16139fb33",
  "metrics": {
    // Measurements object (see below).
  },
  "data": {
    // Extended metadata (see below).
  }
}
```

### Métricas

Na `metadata.metrics` objeto, você encontrará algumas medidas simples para os modelos empacotados com este wearable. Um exemplo:

```json
{
  "entities": 1,
  "bodies": 12,
  "materials": 2,
  "meshes": 12,
  "textures": 2,
  "triangles": 3321
}
```

### Dados

O `metadata.data` objeto é onde as propriedades específicas do wearable estão localizadas.

| Campo             | Valor                                                                  |
| ----------------- | ---------------------------------------------------------------------- |
| `categoria`       | Uma das categorias de wearable listadas acima.                         |
| `representations` | Um array de arquivos associados a diferentes body shapes (ver abaixo). |
| `hides`           | Um array de categorias que este wearable esconde.                      |
| `replaces`        | Um array de categorias que este wearable substitui inteiramente.       |
| `tags`            | Um array de rótulos em string descritivos deste wearable.              |

#### Representações

Cada item no array representations associa um body shape a uma coleção de modelos, e pode adicionar regras sobre quais wearables são exibidos em cada categoria.

| Campo              | Valor                                                                                                                                                                                                    |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bodyShapes`       | Um array de [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) para entidades de body shape.                                                                      |
| `mainFile`         | O arquivo do modelo 3D para iniciar a renderização.                                                                                                                                                      |
| `contents`         | Um array de nomes de arquivos (presentes no nível superior do campo [`content` ) usados pelo](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#properties)field `mainFile`. |
| `overrideHides`    | Substitui a lista `hides` acima para esta representação.                                                                                                                                                 |
| `overrideReplaces` | Substitui a lista `replaces` acima para esta representação.                                                                                                                                              |

Este é um item típico `representations` :

```json
{
  "bodyShapes": [
      "urn:decentraland:off-chain:base-avatars:BaseFemale"
  ],
  "mainFile": "male/190.glb",
  "contents": [
      "male/190.glb"
  ],
  "overrideHides": [ "lower_body" ],
  "overrideReplaces": []
}
```
