# Emotes

Emotes are the [entities](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md) that hold animations for player's avatars.

They include files in GLB format for different body shapes.

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

Emotes have exactly one associated [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md), which indicates the collection they belong to and their index inside of it. They are URNs of this form:

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

To illustrate, the `pointers` array for an emote looks like this:

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

### Metadata Fields

Emotes share most of their basic fields with [wearables](https://github.com/decentraland/docs/blob/main/contributor/entity-types/wearables/README.md). The `emoteDataADR74` property is where the emote-specific information is located.

| Field               | Value                                                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                | The [pointer](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md) that resolves (or used to resolve) to this emote.     |
| `name`              | The display title for this emote in a [collection](https://github.com/decentraland/docs/blob/main/contributor/collections/README.md).              |
| `description`       | An extended description for this emote.                                                                                                            |
| `image`             | The [internal filename](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) with a picture for this emote.        |
| `thumbnail`         | The [internal filename](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) for a 256x256 version of the `image`. |
| `rarity`            | One of `common`, `uncommon`, `rare`, `epic`, `legendary`, `exotic`, `mythic` or `unique`.                                                          |
| `i18n`              | An array of translations for the `name` field.                                                                                                     |
| `collectionAddress` | The Ethereum address for the collection that contains this emote.                                                                                  |
| `metrics`           | Some useful measurements about the animations (see below).                                                                                         |
| `emoteDataADR74`    | The extended metadata for this emote, as defined in [ADR-74](https://adr.decentraland.org/adr/ADR-74) (see below).                                 |

This is how a typical JSON looks like:

```json
{
  "id": "urn:decentraland:matic:collections-v2:0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5:0",
  "name": "Funny Dance",
  "description": "Move around like a champ",
  "image": "image.png",
  "thumbnail": "thumbnail.png",
  "rarity": "rare",
  "i18n": [
    { "code": "es", "text": "Danza Graciosa" }
  ],
  "collectionAddress": "0x2d9560df9dd8ba8b2dc3746bc1d217698d258fb5",
  "metrics": {
    // Measurements object (see below).
  },
  "emoteDataADR74": {
    // Extended metadata defined in ADR-74 (see below).
  }
}
```

### Metrics

In the `metadata.metrics` object, you'll find some simple measurements for the animation packaged with this emote. An example:

```json
{
  "triangles": 0,
  "materials": 0,
  "textures": 0,
  "meshes": 0,
  "bodies": 0,
  "entities": 1
}
```

### Emote Data ADR-74

This object contains the fields that World Explorers (or other graphical applications) need to animate models with this emote.

| Field             | Value                                                                                           |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| `category`        | One of `dance`, `stunt`, `greetings`, `fun`, `poses`, `reactions`, `horror` or `miscellaneous`. |
| `representations` | An array of animation files associated to different body shapes.                                |
| `tags`            | An array of string tags descriptive of this emote.                                              |
| `loop`            | `true` if the animation should repeat itself once it ends.                                      |

Some JSON for clarity:

```json
{
  "category": "dance",
  "representations": [
    // Information about the animation for different body shapes (see below).
  ],
  "tags": [ "carnaval", "dance" ],
  "loop": true
}
```

#### Representations

Each item in the `metadata.emoteDataADR74.representations` field defines the animation files appropriate for each body shape.

| Field        | Value                                                                                                                               |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `bodyShapes` | An array of applicable body shape [pointers](https://github.com/decentraland/docs/blob/main/contributor/pointers/README.md).        |
| `mainFile`   | The [internal filename](https://github.com/decentraland/docs/blob/main/contributor/entities/README.md#files) for the main GLB file. |
| `contents`   | All files, including `mainFile` and any additional ones that it can reference.                                                      |

For example, a `representation` item:

```json
{
  "bodyShapes": [ "urn:decentraland:off-chain:base-avatars:BaseMale" ],
  "mainFile": "male/funnydance.glb",
  "contents": [
    "male/funnydance.glb"
  ]
}
```

You will commonly find two representation entries, one for `BaseMale` and one for `BaseFemale`.
