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

ModInfo


想先跑起来?

这一页是签名与行为参考。模组元信息,唯一必须实现的方法就在这。直接做一遍:教程 · 第一个模组。

模组元信息(不可变 record),每个模组通过 Mod.info() 返回。id 同时决定数据目录、资源命名空间与注册键命名空间,加载前会被宿主严格校验。

方法速览

方法用途
ModInfo(...)规范构造器(六个组件)
of(String, String, String, List<String>, String)不声明依赖的便捷工厂
id()模组唯一标识
name()显示名称
version()模组版本号
authors()作者列表
description()描述
dependsOn()硬依赖模组 id 列表
equals(Object) / hashCode() / toString()record 生成的值语义

完整签名

java
public record ModInfo(
        String id,
        String name,
        String version,
        List<String> authors,
        String description,
        List<String> dependsOn
) {

    public static ModInfo of(String id, String name, String version,
                             List<String> authors, String description);

    String id();

    String name();

    String version();

    List<String> authors();

    String description();

    List<String> dependsOn();

    boolean equals(Object obj);

    int hashCode();

    String toString();
}

ModInfo(String id, String name, String version, List authors, String description, List dependsOn)

签名:

java
public ModInfo(String id, String name, String version, List<String> authors, String description, List<String> dependsOn);

行为:规范构造器。record 只保存引用,不做防御性拷贝:传入的 authors / dependsOn 列表在构造后不应再被修改,否则元信息会随之变化。dependsOn 可为空列表,但不要传 null(宿主排序时把 null 当空处理,其它调用方未必)。

示例:

java
ModInfo info = new ModInfo("hello_mod", "Hello Mod", "1.0.0",
        List.of("YourName"), "示例模组", List.of("core_lib"));

of(String id, String name, String version, List authors, String description)

签名:

java
public static ModInfo of(String id, String name, String version,
                         List<String> authors, String description);

行为:兼容性工厂方法:不声明依赖的模组用此方法构造,dependsOn 为空列表。

示例:

java
return ModInfo.of("hello_mod", "Hello Mod", "1.0.0", List.of("YourName"), "示例模组");

id()

签名:

java
String id();

行为:返回模组唯一标识。宿主要求它匹配 [a-z0-9_.-]{1,64}、不得含 / 与 :,否则拒绝注册;重复 id 的第二次注册被忽略。

示例:

java
String id = mod.info().id();

name()

签名:

java
String name();

行为:返回显示名称;空白会导致注册被拒绝。

示例:

java
String name = mod.info().name();

version()

签名:

java
String version();

行为:返回模组自己的版本号(与 mod-api 版本无关);空白会导致注册被拒绝。

示例:

java
String version = mod.info().version();

authors()

签名:

java
List<String> authors();

行为:返回作者列表;空列表会导致注册被拒绝。

示例:

java
List<String> authors = mod.info().authors();

description()

签名:

java
String description();

行为:返回描述;空白会导致注册被拒绝。

示例:

java
String desc = mod.info().description();

dependsOn()

签名:

java
List<String> dependsOn();

行为:返回硬依赖模组 id 列表。宿主在激活前做拓扑排序:目标既不在本次候选中、也不在已激活集合中 → 记入 MissingDependencyException,本模组不激活(LOAD_FAILED)。与 ModLoadOrder 的 loadAfter / loadBefore(软约束)不同,硬依赖缺失会直接导致加载失败。

示例:

java
List<String> deps = mod.info().dependsOn();

equals(Object obj)

签名:

java
boolean equals(Object obj);

行为:record 生成:六个组件逐一比较(列表按 List.equals)。

示例:

java
boolean same = infoA.equals(infoB);

hashCode()

签名:

java
int hashCode();

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

示例:

java
int h = info.hashCode();

toString()

签名:

java
String toString();

行为:record 生成,形如 ModInfo[id=..., name=..., ...],仅用于日志与调试。

示例:

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

线程:源码未声明额外线程约束(不可变值对象,可跨线程传递;但组件列表本身可能是可变引用)。

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