Theseus 模组文档
API 参考 / 事件系统

RenderEvent


宿主在每个渲染层插槽的前后各投递一次。Pre 在该层内容绘制之前(模组内容画在该层之下),Post 在之后(画在该层之上)。宿主对 7 层都投递 Pre 与 Post,每帧共 14 次。

方法速览

方法用途
layer()本事件对应的渲染层
context()本次回调的渲染上下文(绘制入口)

layer()

java
public final RenderLayer layer();

行为:返回本事件对应的层。自底向上依次为 BACKGROUND → WORLD → NOTES → JUDGE_FX → HUD → OVERLAY → FULLSCREEN。

context()

java
public final RenderContext context();

行为:返回渲染上下文。用 context().canvas() 绘制,context().matrices() 做 3D 变换,width() / height() / partialTick() 取本层逻辑尺寸与帧插值参数。上下文只在回调期间有效,不得缓存;layer() 与当前层一致。

示例

java
ctx.eventBus().subscribe(RenderEvent.Post.class, EventPriority.LOW, event -> {
    if (event.layer() != RenderLayer.HUD) {
        return;
    }
    RenderCanvas canvas = event.context().canvas();
    canvas.setColor(new Color(0xFFFFFF));
    canvas.fillRect(40, 40, 120, 8);
});

完整签名

java
public abstract class RenderEvent extends Event {
    protected RenderEvent(RenderLayer layer, RenderContext context);
    public final RenderLayer layer();
    public final RenderContext context();

    public static final class Pre extends RenderEvent {
        public Pre(RenderLayer layer, RenderContext context);
    }

    public static final class Post extends RenderEvent {
        public Post(RenderLayer layer, RenderContext context);
    }
}

性能:每帧 14 次,监听器必须极轻——禁止分配大对象、禁止阻塞 IO、禁止在渲染回调里做文件或网络访问。

稳定性:2.0 起冻结,2.x 内只增不破。