Mod注解
概述
@target 注解是 SCE-Universe Java 版 Modloader 框架中的核心组件,用于标识一个 Java 类为 Mod,并为其提供必要的元数据,如名称、作者、版本和描述。这个注解使得 Modloader 能够通过运行时反射机制发现、加载和管理社区开发的 Mod。通过 @target 注解,Mod 开发者可以轻松地将自己的 Mod 注册到系统中,而无需复杂的配置或接口实现。
架构
@target 注解在 Modloader 框架中扮演着关键的角色,它连接了 Mod 开发者、Mod 类和 Modloader 本身。
架构解释:
- Mod 开发者: 负责创建 Mod 的主要业务逻辑,并将
target注解应用于 Mod 的主类。 - Mod 主类: Mod 的入口点,通常包含 Mod 的初始化逻辑。它必须使用
@target注解来声明自身是一个 Mod。 - target 注解: 由 SCE-Universe Modloader API 提供,用于为 Mod 主类附加结构化的元数据。
- SCE-Universe Modloader API: 包含
target注解的定义,供 Mod 开发者在他们的项目中引用。 - Mod Jar 文件: 编译后的 Mod 主类和所有相关代码被打包成一个 Jar 文件,供 Modloader 加载。
- Modloader: 框架的核心,负责扫描 Mod Jar 文件,利用 运行时反射机制 查找带有
@target注解的类,并提取其包含的元数据(如name,author,version,Description)。然后,Modloader 会根据这些元数据加载和初始化 Mod。
这种架构确保了 Mod 开发者和 Modloader 之间的松散耦合,允许 Mod 独立开发和部署。
主要内容
@target 注解是一个 Java 标准注解,通过 @Retention(RetentionPolicy.RUNTIME) 和 @Target(ElementType.TYPE) 进行配置。这意味着它将在运行时可用,并且只能应用于类型(如类、接口、枚举或另一个注解)。
注解成员
@target 注解包含以下成员,它们提供了 Mod 的基本信息:
name(): Mod 的名称。这是一个必需的字符串成员。author(): Mod 的作者。默认为"未知"。version(): Mod 的版本。默认为"1.0.0"。Description(): Mod 的简短描述。默认为"None"。
这些信息对于 Modloader 来说至关重要,因为它允许用户在 Mod 列表中查看和管理已安装的 Mod。
使用示例
基本用法
Mod 开发者只需将 @target 注解放置在 Mod 的主类定义上方,并提供 name 属性。其他属性是可选的,将使用默认值。
以下是一个简单的 Mod 主类示例:
1package com.example.mymod;
2
3import cn.oraclestar.sce.system.modloader.target;
4
5@target(
6 name = "我的第一个Mod",
7 author = "Mod开发者A",
8 version = "1.2.0",
9 Description = "这是一个演示如何使用 Modloader target 注解的Mod。"
10)
11public class MyFirstMod {
12 public MyFirstMod() {
13 System.out.println("我的第一个Mod已初始化!");
14 }
15
16 public void onEnable() {
17 System.out.println("Mod: " + getClass().getAnnotation(target.class).name() + " 启动!");
18 }
19}Source: src/cn/oraclestar/sce/system/modloader/target.java (注解定义)
在这个例子中,MyFirstMod 类被标记为 Modloader 可以识别的 Mod。Modloader 在加载 MyFirstMod 时,将能够读取其名称、作者、版本和描述。
只设置必需属性
如果只需要设置 name 属性,其他属性可以使用默认值:
1package com.example.anothermod;
2
3import cn.oraclestar.sce.system.modloader.target;
4
5@target(name = "另一个简单Mod")
6public class AnotherSimpleMod {
7 public AnotherSimpleMod() {
8 System.out.println("另一个简单Mod已初始化!");
9 }
10}Source: src/cn/oraclestar/sce/system/modloader/target.java (注解定义)
API 参考
@target 注解
1@Target(ElementType.TYPE)
2@Retention(RetentionPolicy.RUNTIME)
3public @interface target {
4 String name();
5 String author() default "未知";
6 String version() default "1.0.0";
7 String Description() default "None";
8}成员:
name()(String): Mod 的唯一标识名称。- 返回: Mod 的名称。
author()(String): Mod 的开发者或组织名称。- 默认值:
"未知" - 返回: Mod 的作者。
- 默认值:
version()(String): Mod 的版本号。- 默认值:
"1.0.0" - 返回: Mod 的版本。
- 默认值:
Description()(String): 对 Mod 功能的简短描述。- 默认值:
"None" - 返回: Mod 的描述。
- 默认值:
相关链接
- target.java 源码
- modloader_main.java 源码 (Modloader 的主类,可能包含加载逻辑)