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

SceneUnregisteredEvent


模组场景注册被归属校验受理的 SceneHost.unregister(sceneId) 移除成事实之后投递一次。它标记的是「句柄彻底消亡」:此后再 push 同 id 视为全新注册、全新生命周期。

与其他感知面的区别:

注销是归属校验制(只能注销本模组、且完全离栈的场景注册)。所有拒绝路径(无身份 / 未注册 / 归属不可证 / 他人归属 / 仍在导航栈)都不发事件。

方法速览

方法用途
declaredId()被注销的场景声明 id
modId()注销受理时登记的归属模组 id

declaredId()

java
public String declaredId();

行为:返回模组声明的场景 id(与 SceneInfo.id() 同口径,例如 "mypanel",不是宿主的内部名 _mod_mypanel)。

modId()

java
public String modId();

行为:返回注销受理时登记的归属模组 id。

示例

java
ctx.eventBus().subscribe(SceneUnregisteredEvent.class, event -> {
    if (mySceneId.equals(event.declaredId())) {
        cachedSceneHandle = null;
    }
});

完整签名

java
public class SceneUnregisteredEvent extends Event {
    public SceneUnregisteredEvent(String declaredId, String modId);
    public String declaredId();
    public String modId();
}

行为核验:宿主在 ModSceneAdapter.unregister 成功之后才 post,属于纯通知、不可回滚。不要在监听器里立刻重新注册同一 id(导航栈状态未定),回到稳定状态后再操作。

线程:调用 unregister 的线程(通常为游戏线程)。

稳定性: 新增,2.x 内只增不破。