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

ResourceReloadEvent


资源 / 语言重载事件。宿主真实切换语言并完成重载后投递 Kind.LANGUAGE(同语言重复设置不投递);Kind.RESOURCES 当前没有宿主发布点——资源热重载是后台线程事实,与「监听器在游戏线程回调」的线程约定冲突,宿主如实声明暂不投递。

方法速览

方法用途
kind()重载种类
detail()重载细节

kind()

java
public Kind kind();

行为:返回重载种类 LANGUAGE 或 RESOURCES。当前只有 LANGUAGE 会实际到达。

detail()

java
public String detail();

行为:Kind.LANGUAGE 时返回新的 locale(如 "zh");Kind.RESOURCES 时为 null。

示例

java
ctx.eventBus().subscribe(ResourceReloadEvent.class, event -> {
    if (event.kind() == ResourceReloadEvent.Kind.LANGUAGE) {
        // 语言已切换:刷新缓存的文案 / 重新读取自带语言文件
        reloadCachedTexts(event.detail());
    }
});

完整签名

java
public class ResourceReloadEvent extends Event {
    public enum Kind {
        LANGUAGE,
        RESOURCES
    }

    public ResourceReloadEvent(Kind kind, String detail);
    public Kind kind();
    public String detail();
}

行为核验:发布点在 Translator 的语言重载钩子 → GlobalHostEventRelay 转播,发生在游戏线程内同步投递。监听器不应假设 RESOURCES 会到达。事件不可取消。

稳定性:2.0 起冻结;LANGUAGE 的真实发布点为 阶段 3 新增。