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 生成的值语义 |
完整签名
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)
签名:
public ModInfo(String id, String name, String version, List<String> authors, String description, List<String> dependsOn);行为:规范构造器。record 只保存引用,不做防御性拷贝:传入的 authors / dependsOn 列表在构造后不应再被修改,否则元信息会随之变化。dependsOn 可为空列表,但不要传 null(宿主排序时把 null 当空处理,其它调用方未必)。
示例:
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)
签名:
public static ModInfo of(String id, String name, String version,
List<String> authors, String description);行为:兼容性工厂方法:不声明依赖的模组用此方法构造,dependsOn 为空列表。
示例:
return ModInfo.of("hello_mod", "Hello Mod", "1.0.0", List.of("YourName"), "示例模组");id()
签名:
String id();行为:返回模组唯一标识。宿主要求它匹配 [a-z0-9_.-]{1,64}、不得含 / 与 :,否则拒绝注册;重复 id 的第二次注册被忽略。
示例:
String id = mod.info().id();name()
签名:
String name();行为:返回显示名称;空白会导致注册被拒绝。
示例:
String name = mod.info().name();version()
签名:
String version();行为:返回模组自己的版本号(与 mod-api 版本无关);空白会导致注册被拒绝。
示例:
String version = mod.info().version();authors()
签名:
List<String> authors();行为:返回作者列表;空列表会导致注册被拒绝。
示例:
List<String> authors = mod.info().authors();description()
签名:
String description();行为:返回描述;空白会导致注册被拒绝。
示例:
String desc = mod.info().description();dependsOn()
签名:
List<String> dependsOn();行为:返回硬依赖模组 id 列表。宿主在激活前做拓扑排序:目标既不在本次候选中、也不在已激活集合中 → 记入 MissingDependencyException,本模组不激活(LOAD_FAILED)。与 ModLoadOrder 的 loadAfter / loadBefore(软约束)不同,硬依赖缺失会直接导致加载失败。
示例:
List<String> deps = mod.info().dependsOn();equals(Object obj)
签名:
boolean equals(Object obj);行为:record 生成:六个组件逐一比较(列表按 List.equals)。
示例:
boolean same = infoA.equals(infoB);hashCode()
签名:
int hashCode();行为:record 生成,与 equals 一致。
示例:
int h = info.hashCode();toString()
签名:
String toString();行为:record 生成,形如 ModInfo[id=..., name=..., ...],仅用于日志与调试。
示例:
ctx.getLogger().info(String.valueOf(mod.info()));线程:源码未声明额外线程约束(不可变值对象,可跨线程传递;但组件列表本身可能是可变引用)。
稳定性:2.0 起冻结:2.x 内只增不破(禁止删签名 / 改签名 / 改语义);破坏性变更只在 major 版本发生且须提供迁移指南与至少一个大版本的弃用期。3.x 内继续只增不破。