Theseus 模组文档
API 参考 / 渲染、资源与语言

LayerOverride


用途:声明「某一层的默认绘制不要画」——宿主跳过该层默认内容,但层的 RenderEvent.Pre / .Post 照常投递,你在监听器里自绘替换内容。

完整签名

java
public interface LayerOverride {

    RenderLayer layer();
}

layer()

签名:

java
RenderLayer layer();

行为:返回要替换默认绘制的层。

注册入口:ctx.registries().layerOverrides()(onPreInit 内)。

示例:替换 HUD 层为极简样式

java
// 注册替换声明
ctx.registries().layerOverrides().register(
        RegistryKey.of("mymod", "minimal_hud", LayerOverride.class),
        () -> RenderLayer.HUD);

// 然后自己画 HUD
bus.subscribe(RenderEvent.Pre.class, EventPriority.NORMAL, e -> {
    if (e.context().layer() != RenderLayer.HUD) return;
    RenderCanvas c = e.context().canvas();
    c.save();
    c.setColor(java.awt.Color.WHITE);
    c.fillRect(20, 20, 200, 2);      // 极简进度条
    c.restore();
});