# 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