Theseus 模组文档
API 参考 / 入口与生命周期

LoadStage 与 ModLoadOrder


LoadStage 是模组加载阶段枚举;ModLoadOrder 是模组加载顺序声明(不可变 record),模组经 Mod.loadOrder() 返回,声明加载阶段与软依赖。宿主按阶段升序激活模组:CORE → PRE_INIT → INIT → POST_INIT,未声明阶段的模组默认落在 INIT。

方法速览

方法用途
LoadStage.valueOf(String) / LoadStage.values()枚举生成方法
ModLoadOrder(LoadStage, List<String>, List<String>)规范构造器
of(LoadStage)仅声明阶段,无软依赖
init()默认阶段(INIT),无软依赖
stage()加载阶段
loadAfter()软依赖:排在目标之后
loadBefore()软反向依赖:排在目标之前
equals(Object) / hashCode() / toString()record 生成的值语义

完整签名

java
public enum LoadStage {
    CORE,
    PRE_INIT,
    INIT,
    POST_INIT
}
java
public record ModLoadOrder(
        LoadStage stage,
        List<String> loadAfter,
        List<String> loadBefore
) {

    public static ModLoadOrder of(LoadStage stage);

    public static ModLoadOrder init();

    LoadStage stage();

    List<String> loadAfter();

    List<String> loadBefore();

    boolean equals(Object obj);

    int hashCode();

    String toString();
}

常量语义

常量含义
CORE底层框架、API、运行时库;必须被其它模组依赖才允许声明
PRE_INIT需要在普通初始化之前准备的模组
INIT普通模组(未声明阶段时的默认值)
POST_INIT需要等大多数模组加载完后运行的模组

ModLoadOrder(LoadStage stage, List loadAfter, List loadBefore)

签名:

java
public ModLoadOrder(LoadStage stage, List<String> loadAfter, List<String> loadBefore);

行为:规范构造器。紧凑构造把 null 列表归一为空列表,并用 List.copyOf 复制成不可变列表(元素不可为 null,否则 NullPointerException)。stage 为 null 时由宿主视为 LoadStage.INIT(record 本身保留 null)。

示例:

java
ModLoadOrder order = new ModLoadOrder(LoadStage.POST_INIT, List.of("core_lib"), List.of());

of(LoadStage stage)

签名:

java
public static ModLoadOrder of(LoadStage stage);

行为:兼容性工厂:仅声明阶段,无软依赖。

示例:

java
return ModLoadOrder.of(LoadStage.PRE_INIT);

init()

签名:

java
public static ModLoadOrder init();

行为:兼容性工厂:默认阶段 INIT,无软依赖。等价于 of(LoadStage.INIT)。

示例:

java
return ModLoadOrder.init();

stage()

签名:

java
LoadStage stage();

行为:返回声明的加载阶段;可能为 null(宿主按 INIT 处理)。

示例:

java
LoadStage stage = mod.loadOrder().stage();

loadAfter()

签名:

java
List<String> loadAfter();

行为:返回软依赖列表:若目标模组参与本次加载,本模组排在它之后;目标不存在(未注册 / 未启用)时该约束自动失效,不影响加载。与 ModInfo.dependsOn()(硬依赖,缺失即失败)不同。

示例:

java
List<String> after = mod.loadOrder().loadAfter();

loadBefore()

签名:

java
List<String> loadBefore();

行为:返回软反向依赖列表:若目标模组参与本次加载,本模组排在它之前;目标不存在时自动失效。软边成环时宿主丢弃该边并记录说明,不阻断加载。

示例:

java
List<String> before = mod.loadOrder().loadBefore();

equals(Object obj)

签名:

java
boolean equals(Object obj);

行为:record 生成:阶段与两个列表逐一比较。

示例:

java
boolean same = orderA.equals(orderB);

hashCode()

签名:

java
int hashCode();

行为:record 生成,与 equals 一致。

示例:

java
int h = order.hashCode();

toString()

签名:

java
String toString();

行为:record 生成,形如 ModLoadOrder[stage=..., loadAfter=..., loadBefore=...]。

示例:

java
ctx.getLogger().info(String.valueOf(order));

线程:源码未声明额外线程约束。

稳定性:2.0 起冻结:2.x 内只增不破(禁止删签名 / 改签名 / 改语义);破坏性变更只在 major 版本发生且须提供迁移指南与至少一个大版本的弃用期。3.x 内继续只增不破。