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

JudgeInput


判定输入:宿主为一次判定构造的上下文,传入 NoteTypeDefinition.onJudge。字段都是快照值,不随判定过程变化。

方法速览

方法用途
noteTime()音符时间(毫秒)
judgeTime()判定时间(毫秒)
deltaMs()judgeTime - noteTime
lane()音符轨道
isHoldEnd()是否为长按终点判定
note()该音符的运行时数据

noteTime()

签名:

java
long noteTime();

行为:音符时间(毫秒)。长音符合成判定时始终是起点时间。

示例:

java
long target = input.noteTime();

judgeTime()

签名:

java
long judgeTime();

行为:本次判定发生的时间(毫秒,一般为当前音乐时间)。

示例:

java
long at = input.judgeTime();

deltaMs()

签名:

java
long deltaMs();

行为:judgeTime - noteTime。正值表示迟到、负值表示早到、0 表示正好。

示例:

java
if (Math.abs(input.deltaMs()) <= 30) { /* 正中 */ }

lane()

签名:

java
int lane();

行为:音符所在轨道(0-based)。

示例:

java
int lane = input.lane();

isHoldEnd()

签名:

java
boolean isHoldEnd();

行为:true 表示这是长按终点判定(终点只检查是否仍按住,不比较时间差),false 为起点/普通判定。

示例:

java
if (!input.isHoldEnd()) { /* 起点判定 */ }

note()

签名:

java
NoteData note();

行为:该音符的运行时数据。自定义类型返回 deserialize 产出的自有实例;内置类型返回只读适配器(setTime / setLane / setEndTime 转发内核音符,setJudged / setExtensionData 无操作)。可在 onJudge 中读取扩展数据。

示例:

java
NoteData note = input.note();
Object data = note.extensionData();

完整签名

java
public interface JudgeInput {

    long noteTime();

    long judgeTime();

    long deltaMs();

    int lane();

    boolean isHoldEnd();

    NoteData note();
}

线程:源码未声明额外线程约束;宿主在游玩更新线程同步传入。

生命周期阶段:运行期判定回调内使用。

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