> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cheart.getvapu.today/llms.txt
> Use this file to discover all available pages before exploring further.

# render

> 2D GUI 绘制（render_2d / render_screen 里用）

<Tip>所有方法只在 `render_2d` 或 `render_screen` 事件回调内有效，之外 no-op。</Tip>

### 状态

```java theme={null}
boolean render.isActive()
int     render.getScaledWidth()
int     render.getScaledHeight()
```

### 矩形

```java theme={null}
render.rect(double x, double y, double w, double h, long color)
render.outline(double x, double y, double w, double h, double thickness, long color)
render.round(double x, double y, double w, double h, double radius, long color)
render.round(double x, double y, double w, double h, double radius, long color,
             boolean topLeft, boolean topRight, boolean bottomLeft, boolean bottomRight)
render.circle(double cx, double cy, double radius, long color)              // 实心圆
render.drawPlayerHead(double x, double y, double w, double h, Player player) // 玩家头像
render.gradientH(double x, double y, double w, double h, long startColor, long endColor)
render.gradientV(double x, double y, double w, double h, long startColor, long endColor)
```

### 文字

```java theme={null}
float render.text(String text, double x, double y, long color)
float render.textCentered(String text, double cx, double y, long color)
float render.textRight(String text, double rightX, double y, long color)
float render.textWidth(String text)
int   render.fontHeight()
```

### 图片

```java theme={null}
Image render.createImage(byte[] data)
Image render.createImageFromBase64(String base64)
```

返回的 [`Image`](/api/image) 可重复调用 `draw(x, y, w, h)`。

### 裁剪（scissor）

```java theme={null}
render.pushScissor(double x, double y, double w, double h)
render.popScissor()
render.endScissor()
```

### 世界 → 屏幕投影

```java theme={null}
double[] render.worldToScreen(double x, double y, double z)
// 返回 { screenX, screenY, depth }，屏幕外返回 null

double[] render.worldBoxToScreen(double minX, double minY, double minZ,
                                 double maxX, double maxY, double maxZ)
// 返回 { minX, minY, maxX, maxY }（屏幕空间包围矩形），任一角不可见返回 null

double[] render.worldBoxToScreenEntity(Entity entity)
// 实体 AABB 按 partialTicks 插值后投影
```
