> ## 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.

# 示例

> 常用模式速查

## 完整项目

* [Scaffold](/scaffold2) — 简单Grim Scaffold
* [Item Tags](/itemtags) — 在物品上显示名称
* [Click Gui](/clickgui) — 简易ClickGui

## 带属性的模块

```java theme={null}
@Module(name="Auto Jump", category="MOVE")
void meta(vm) {
    vm.registerBoolean("sprint", "Require Sprint", true);
}

@EventTarget(events="tick")
void onTick(event) {
    if (me.getBool("sprint") && !me.getPlayer().isSprinting()) return;
    if (me.getPlayer().isOnGround()) {
        me.getPlayer().jump();
    }
}
```

## 命令

```java theme={null}
@Command(name="tpa", aliases="tpaccept,tpyes")
void exec(args) {
    me.command("/tpaccept");
}
```

## 2D ESP

```java theme={null}
@Module(name="Player Box", category="VISUAL", defaultEnabled=true)
void meta(vm) { vm.registerColor("color", "Color", 0xFF00FF00); }

@EventTarget(events="render_2d")
void onRender(event) {
    for (p : me.getWorld().getPlayerEntities()) {
        if (p.getId() == me.getPlayer().getId()) continue;
        rect = render.worldBoxToScreenEntity(p);
        if (rect == null) continue;
        render.outline(rect[0], rect[1], rect[2]-rect[0], rect[3]-rect[1], 1.0, moduleManager.self().getProperty("color").getRGB());
    }
}
```

## 3D 盒子 + 文字

```java theme={null}
@EventTarget(events="render_3d")
void onRender3D(event) {
    if (!render3d.isPost()) return;
    for (item : me.getWorld().getItemEntities()) {
        render3d.boxEntityOutline(item, 0xFF00FF00);
    }
    render3d.clearDepth();
    for (item : me.getWorld().getItemEntities()) {
        p = render3d.interpolatedPos(item);
        render3d.text("Item", p.x, p.y + 0.8, p.z, 1.5, true);
    }
}
```

## 发包

```java theme={null}
packet.send(packet.createServerboundSwingPacket("MAIN_HAND"));
packet.sendNoEvent(packet.createServerboundContainerClosePacket(0));
```

## 跨脚本调用

```java theme={null}
// _math_libs.bsh  （下划线开头，优先加载）
@OnLoad void reg() { bridge.addPublicMethod("math", "distance"); }
double distance(double x1, double y1, double x2, double y2) {
    return Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
}

// user.bsh
d = bridge.invokePublicMethod("math", "distance", 0.0, 0.0, 3.0, 4.0);
```

## HTTP + Gson

```java theme={null}
@Command(name="ip")
void exec(args) { me.async("fetchIp"); }

void fetchIp() {
    r = HttpClient.get("https://api.ipify.org?format=json");
    me.log(r);
    if (!r.isOk()) return;
    obj = JsonParser.parseString(r.body).getAsJsonObject();
    me.subChat("ip: " + obj.get("ip").getAsString());
}
```
