OracleLoadstar/SCE-Universe_Java_Edition
开发者指南Modloader开发

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 主类示例:

java
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 属性,其他属性可以使用默认值:

java
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 注解

java
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}

Source: src/cn/oraclestar/sce/system/modloader/target.java

成员:

  • name() (String): Mod 的唯一标识名称。
    • 返回: Mod 的名称。
  • author() (String): Mod 的开发者或组织名称。
    • 默认值: "未知"
    • 返回: Mod 的作者。
  • version() (String): Mod 的版本号。
    • 默认值: "1.0.0"
    • 返回: Mod 的版本。
  • Description() (String): 对 Mod 功能的简短描述。
    • 默认值: "None"
    • 返回: Mod 的描述。

相关链接

Sources

(1 files)

On this page