Theseus 模组文档
API 参考 / spi 包:音符与判定 SPI

NoteParseContext


想先跑起来?

这一页是签名与行为参考。解析期只读上下文。直接做一遍:教程 · 添加新音符类型。

谱面解析上下文,仅在 deserialize / onCreateRuntime 期间由宿主传入,用于让解析逻辑感知谱面规模。不要在运行期(判定/渲染回调)保存或使用该实例。

方法速览

方法用途
totalLanes()谱面总轨道数
bpm()谱面主 BPM(0ms 处)
contentScale()内容缩放比例(当前宿主恒为 1.0)

totalLanes()

签名:

java
int totalLanes();

行为:谱面总轨道数,可用于校验或按轨道数换算自定义字段。

示例:

java
int lanes = ctx.totalLanes();

bpm()

签名:

java
int bpm();

行为:谱面 0ms 处 BPM 的四舍五入整数值;取 BPM 抛异常时为 0(宿主兜底,不向模组抛错)。

示例:

java
double beatMs = 60_000.0 / Math.max(1, ctx.bpm());

contentScale()

签名:

java
double contentScale();

行为:谱面内容缩放比例。当前宿主在加载路径固定传 1.0;实现应按接口语义使用(不要假设它永远为 1),也不要把它与轨道缩放混用。

示例:

java
double scaled = raw * ctx.contentScale();

完整签名

java
public interface NoteParseContext {

    int totalLanes();

    int bpm();

    double contentScale();
}

线程:源码未声明额外线程约束;宿主在谱面解析线程同步传入。

生命周期阶段:仅解析期(deserialize / onCreateRuntime)内有效。

稳定性:2.0 起冻结:2.x 内只增不破(禁止删签名/改签名/改语义)。