Skip to main content

完整项目

带属性的模块

@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();
    }
}

命令

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

2D ESP

@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 盒子 + 文字

@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);
    }
}

发包

packet.send(packet.createServerboundSwingPacket("MAIN_HAND"));
packet.sendNoEvent(packet.createServerboundContainerClosePacket(0));

跨脚本调用

// _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

@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());
}