Theseus 模组文档
开始

快速上手

从零开始:创建项目 → 编写最小模组 → 打包 → 加载到游戏


从这里开始

按你的目标选一条路,每条都能一路走到可运行的结果:

我想…从这里进说明
从零学写 Java 模组教程目录12 篇任务式教程,从装环境到加音符类型、自己开场景,每篇都有完整代码与运行检查点
只想改外观 / 做资源资源制作指南音符皮肤、打击特效,多数不用写代码
完全不想写 JavaTHS 简易语言用脚本做 HUD、滤镜、特效
查某个类的确切用法API 参考每个类型一页,逐方法签名与示例

第一次写模组,直接进 教程目录,按顺序做前两篇即可跑通「编译 → 加载 → 看到自己的代码执行」。

什么是 Theseus 模组

Theseus 模组系统允许你用 Java 为游戏编写扩展。模组可以:

所有 API 位于 com.seecmd.mod.api 包中;自 3.0 起公共签名冻结(3.x 内只增不破)。

最快路径:官方模板(推荐)

不需要从零搭工程、不需要装 Maven、不需要配置依赖——下载模板,解压即用。

  1. 下载 mods-template.zip(已内含 mod-api-3.2.jar、build.bat 与可直接运行的 ExampleMod 示例)并解压。
  2. 编辑 build.bat 顶部的变量:MOD_ID、MOD_NAME、MOD_VERSION、MOD_CLASS(指向你的入口类)与 API_VERSION(期望的 mod-api 主版本)。
  3. 在 src\main\java 下写你的模组代码(参考模板里的 ExampleMod),资源放 src\main\resources。
  4. 双击 build.bat,产物在 target\<MOD_ID>-<MOD_VERSION>.jar。
  5. 把 jar 复制到游戏的 mods\ 目录,启动游戏,模组即被加载。

你唯一需要的环境是 JDK 17+(安装时勾选「加入 PATH」即可)。其余全部由模板代劳。

最小模组只需实现 Mod 接口:

java
package com.example.helloworld;

import com.seecmd.mod.api.Mod;
import com.seecmd.mod.api.ModContext;
import com.seecmd.mod.api.ModInfo;

import java.util.List;

public class HelloWorldMod implements Mod {

    @Override
    public ModInfo info() {
        return ModInfo.of(
                "com_example_helloworld",   // id:小写下划线
                "Hello World",              // 显示名
                "0.1.0",                    // 版本
                List.of("Alice"),           // 作者
                "最小模组示例"               // 描述
        );
    }

    @Override
    public void onInit(ModContext ctx) {
        // 注册表冻结之后调用:读配置、读资源、订阅事件、建缓存都放这里
        ctx.getLogger().info("Hello World 模组已初始化");
        // 向玩家展示提示:toast 数秒后自动消失;重要信息可用 ctx.notifier().dialog("...", 5000)
        ctx.notifier().info("Hello World 模组已初始化");
    }
}

Mod.info() 是唯一必须实现的方法。需要注册自有内容(音符类型 / 游戏模式 / 判定等级 / 渲染滤镜等)时,覆写 onPreInit(ModContext) 并在 ctx.registries() 里注册——注册窗口一次性打开,冻结后(onInit 及之后)再注册会抛 RegistryFrozenException。需要参与游玩(覆盖渲染 / 修改判定 / 监听事件)时,改实现 GameplayMod 接口(继承自 Mod),并在 onInit 里经 ctx.eventBus() 订阅事件。ModContext 是模组的「工具箱」:日志、数据目录、配置、统一注册表入口(ctx.registries())、能力注入、用户通知等,见 API 参考。

验证模组已加载

模组加载成功时,控制台会打印模组日志([com_example_helloworld] Hello World 模组已加载),游戏内也会弹出你通过 notifier() 发送的提示。若什么都没发生:

进阶:手工搭建工程

如果你已有自己的构建体系(Maven / Gradle / IDE),也可以手工引入依赖。

重要:依赖 scope 必须为 provided(Maven)或 compileOnly(Gradle)。API 由宿主在运行期提供,模组 jar 不得把宿主类打进去。

第一步:安装 mod-api 到本地仓库(只需一次)

从 这里 下载 jar,执行:

text
mvn install:install-file -Dfile=mod-api-3.2.jar -DgroupId=com.seecmd -DartifactId=mod-api -Dversion=3.2 -Dpackaging=jar

第二步:声明依赖

Maven 示例:

xml
<dependencies>
    <dependency>
        <groupId>com.seecmd</groupId>
        <artifactId>mod-api</artifactId>
        <version>3.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.10.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Gradle 示例:

groovy
dependencies {
    compileOnly 'com.seecmd:mod-api:3.2'
    compileOnly 'com.google.code.gson:gson:2.10.1'
}

打包:编译后打包为标准 jar,manifest 必须包含以下条目:

manifest
Manifest-Version: 1.0
Seecmd-Mod-Id: com_example_helloworld
Seecmd-Mod-Class: com.example.helloworld.HelloWorldMod
Seecmd-Mod-Name: Hello World
Seecmd-Mod-Version: 0.1.0
Seecmd-Mod-Authors: Alice
Seecmd-Mod-Description: 一个示例模组,演示 Theseus 模组 API 基础用法
Seecmd-Api-Version: 3.2

Seecmd-Api-Version 声明你期望的模组 API 主版本(当前为 3.2):与宿主支持的模组 API 主版本不一致时拒绝加载并明确提示;键缺失则按宿主当前支持的模组 API 版本处理。建议显式写上。

完整配置参考模板中的 pom.xml(已配置好 maven-jar-plugin 的 manifest 生成)。

加载到游戏

  1. 把打包好的 xxx.jar 放进游戏工作目录下的 mods/ 文件夹(与 data/ 同级)。
  2. 启动游戏,加载器自动扫描 mods/ 目录,读取 manifest 定位入口类并注册。
  3. 模组数据目录在 data/mods/<modId>/(首次访问自动创建)。
  4. 模组默认禁用——新放入的 jar 不会自动生效,需在游戏的模组列表(模组菜单)中手动启用。启用状态持久化在 userdata/settings.json 的 enabledMods,也可用外置工具 mods/mod-manager.jar 管理。

模组 id 命名规范

文档导览

文档站按「开始 → 教程 → 开发指南 → API 参考 → 资源 / 架构」组织,左侧目录可逐级展开。

教程(按任务,共 12 篇)

每篇是一个能独立做出结果的小项目,含原理速讲、分步操作、运行检查点与完整代码。建议按顺序:

篇目你会做出
序章:把环境搭起来能编译、能加载的空模组工程
第一个模组会打日志、能存数据、会弹提示的模组
自定义 HUD隐藏原版连击,换成自己的大字连击与进度条
自定义打击特效按判定等级区分的命中特效
添加判定等级比 PERFECT 更严的 ULTRA 等级
添加新音符类型谱面里能写的双击音符
添加游戏模式谱面左右镜像的游玩模式
订阅游玩事件监听判定/连击/按键,并拦下某个按键
贴图与译文自带贴图与中英文语言文件
设置项与快捷键设置界面多出开关与数值项,注册全局快捷键
自定义场景快捷键打开一个自绘面板,带输入框
打包与发布打出能分享、能被加载的模组 jar

教程讲「怎么做成」,开发指南讲「机制与工程细节」。做完教程再回来查指南,会顺很多。

开发指南(分主题,共 12 篇)

篇目内容
环境搭建与第一个模组两条构建路线、目录布局、manifest、最小可运行模组
生命周期与阶段职责四阶段各自能做什么、常见坑
注册自有内容注册表、音符类型、判定等级、游戏模式
事件订阅一条总线、优先级、订阅与退订
资源与语言资源路径与查找顺序、译文贡献
渲染与视觉扩展渲染滤镜、背景渲染器、RenderCanvas、场景实体
能力接口实战HUD、按键映射、自定义场景、音频、网络、设置项
配置与数据存储config() 与模组自有数据目录
依赖声明模组间依赖与加载顺序
调试与排错日志、加载失败定位
打包与发布产物结构与发布检查
兼容性与版本API 版本协商与迁移

API 参考(每个类型一页)

签名权威、每个类/接口单独一页,页内每个方法都有签名、行为说明与可抄用示例;按包分类挂在左侧「API 参考」下。常用入口:

其他

页面内容
THS 简易语言零基础脚本模组,无 Java 知识要求
资源制作指南不用写代码:音符皮肤、打击特效、谱面、音频
资源集合模板工程 / API jar 下载与页面索引
制谱器使用指南Theseus Chart Editor 完整操作手册
制谱器开发文档谱面 JSON 规范 + 编辑器插件 API
架构设计分层结构、能力原语与核心抽象
更新日志版本变更与迁移要点

按你的情况选择路径: