# MenuTransform
> Immutable positioning data for menu and component elements.
`gg.lode.lecternapi.api.menu.MenuTransform`
---
## Signature
```java
public record MenuTransform(float x, float y, int layer, float alpha,
HorizontalAlignment horizontalAlignment,
VerticalAlignment verticalAlignment)
```
---
## Overview
MenuTransform is an immutable record that defines the position, layer, opacity, and alignment of an element. All builder methods return a new instance, allowing fluent chaining.
---
## Usage
```java
// Basic position (top-left, full opacity, layer 0)
MenuTransform.at(10, 20)
// With layer and alpha
MenuTransform.at(10, 20).layer(5).alpha(0.8f)
// With alignment
MenuTransform.at(0, 0).align(HorizontalAlignment.CENTER, VerticalAlignment.TOP)
// Centered shorthand
MenuTransform.at(0, 0).centered()
```
---
## Fields
| Field | Type | Description |
|---|---|---|
| `x` | `float` | Horizontal position. |
| `y` | `float` | Vertical position. |
| `layer` | `int` | Render layer (z-index). Higher values render on top. |
| `alpha` | `float` | Opacity (0.0 to 1.0). |
| `horizontalAlignment` | `HorizontalAlignment` | Horizontal alignment: `LEFT`, `CENTER`, or `RIGHT`. |
| `verticalAlignment` | `VerticalAlignment` | Vertical alignment: `TOP`, `CENTER`, or `BOTTOM`. |
---
## Constants
### DEFAULT
```java
public static final MenuTransform DEFAULT
```
A transform at `(0, 0)` with layer `0`, full opacity, and top-left alignment.
---
## Static Methods
### at
```java
public static MenuTransform at(float x, float y)
```
Creates a transform at the given position with default layer (`0`), full opacity (`1.0`), and top-left alignment.
| Parameter | Type | Description |
|---|---|---|
| `x` | `float` | Horizontal position. |
| `y` | `float` | Vertical position. |
---
## Fluent Methods
### layer
```java
public MenuTransform layer(int layer)
```
Returns a new transform with the specified render layer.
---
### alpha
```java
public MenuTransform alpha(float alpha)
```
Returns a new transform with the specified opacity.
---
### align
```java
public MenuTransform align(HorizontalAlignment h, VerticalAlignment v)
```
Returns a new transform with the specified alignment.
---
### centered
```java
public MenuTransform centered()
```
Returns a new transform centered on both axes. Shortcut for `align(CENTER, CENTER)`.
---
## Related Pages
- [[PacketComponent]] — Uses MenuTransform for element positioning
- [[PacketMenu]] — Uses MenuTransform for element positioning