# ElementData
> Sealed interface representing the data for a single element within a PacketComponent.
`gg.lode.lecternapi.api.component.ElementData`
---
## Signature
```java
public sealed interface ElementData permits
ElementData.TextureData,
ElementData.HeadData,
ElementData.PlayerData,
ElementData.ButtonData,
ElementData.TextData
```
---
## Overview
Each variant is a record, so equality checks are automatic. This is used by the tick loop to detect which tickable elements have changed and need re-sending to the client.
---
## Common Method
### relativeTransform
```java
MenuTransform relativeTransform()
```
Returns the element's position relative to its parent component.
---
## Variants
### TextureData
```java
record TextureData(String textureId, MenuTransform relativeTransform, float width, float height)
```
| Field | Type | Description |
|---|---|---|
| `textureId` | `String` | The texture identifier. |
| `relativeTransform` | `MenuTransform` | Position relative to the component. |
| `width` | `float` | Texture width in pixels. |
| `height` | `float` | Texture height in pixels. |
---
### HeadData
```java
record HeadData(String headUuid, MenuTransform relativeTransform, float width, float height)
```
| Field | Type | Description |
|---|---|---|
| `headUuid` | `String` | The UUID of the player whose head to render. |
| `relativeTransform` | `MenuTransform` | Position relative to the component. |
| `width` | `float` | Head width in pixels. |
| `height` | `float` | Head height in pixels. |
---
### PlayerData
```java
record PlayerData(String identifier, MenuTransform relativeTransform, float width, float height)
```
| Field | Type | Description |
|---|---|---|
| `identifier` | `String` | The username or UUID of the player to render. |
| `relativeTransform` | `MenuTransform` | Position relative to the component. |
| `width` | `float` | Render width in pixels. |
| `height` | `float` | Render height in pixels. |
---
### ButtonData
```java
record ButtonData(String textureId, MenuTransform relativeTransform, int width, int height, ButtonListener listener)
```
| Field | Type | Description |
|---|---|---|
| `textureId` | `String` | The button texture identifier. |
| `relativeTransform` | `MenuTransform` | Position relative to the component. |
| `width` | `int` | Button width in pixels. |
| `height` | `int` | Button height in pixels. |
| `listener` | `ButtonListener` | The click/hover handler. |
---
### TextData
```java
record TextData(String text, MenuTransform relativeTransform, float scale)
```
| Field | Type | Description |
|---|---|---|
| `text` | `String` | The text content (supports MiniMessage format). |
| `relativeTransform` | `MenuTransform` | Position relative to the component. |
| `scale` | `float` | Text scale multiplier. |
---
## Related Pages
- [[PacketComponent]] — Uses ElementData for element storage and dirty checking
- [[MenuTransform]] — Positioning data used by all variants