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

语义标记子接口


2.0 起行为分类不再用布尔旗标,而是由类型实现以下空标记接口声明语义;宿主判定/渲染按 instanceof 路由,签名不变。四个标记都只 extends NoteTypeDefinition、本批不增加成员(后续可在其上挂配置方法而不破坏二进制兼容)。不实现任何标记 = Tap(普通)语义(内置 seecmd:normal)。

同一类型只应实现一个标记:宿主各分支按固定顺序检查(渲染为 payload → exploit → barrier → hold),同时实现多个时的表现不属于契约。

HoldNoteType(长按)

按下后持续按压至终点自动判定:按键命中只判定起点(起点已判、音符整体未判),到达 endTime 时若该轨道仍按住则直接 PERFECT(不比较时间差),未按住则等 endTime + missWindowMs 后强制 MISS。无效情况:endTime 为 null 时终点没有结算路径,音符会一直悬置——实现本标记必须保证 endTime 非空。

java
public interface HoldNoteType extends NoteTypeDefinition {
}

BarrierNoteType(屏障)

多轨道横条(由谱面 laneMask 决定覆盖轨道),需多次击打摧毁:每次有效击打把 hitsRemaining 减一(同一轮内重复击打同一屏障只播音效、不重复削减),归零时才产出 PERFECT;未摧毁的击打返回 NONE(不计分、不断连)。击打窗口为音符时间前 5000ms 至后 missWindowMs;无序模式下由专用路径处理。

java
public interface BarrierNoteType extends NoteTypeDefinition {
}

ExploitNoteType(漏洞利用)

判定后激活关联的 Payload 自动轨道:Exploit 被成功判定(PERFECT/GREAT)后,其 exploitId 对应的 Payload(parentExploitId)进入自动判定路径;Exploit MISS 时其全部 Payload 立即 MISS。联动宽限为 150ms(父 Exploit 超过 150ms 仍未判定则其 Payload 判 MISS)。

java
public interface ExploitNoteType extends NoteTypeDefinition {
}

PayloadNoteType(载荷)

Exploit 的跟随音符,不参与按键候选匹配,在父 Exploit 成功判定后自动结算:到达自身时间且该轨道处于按住状态时产出 PERFECT;未按住且超过音符时间 150ms 判 MISS。无父级(孤立 Payload)立即 MISS。无序模式下到达音符时间即自动 PERFECT。

java
public interface PayloadNoteType extends NoteTypeDefinition {
}

线程:源码未声明额外线程约束;语义由宿主既有判定/渲染路径在游玩线程执行。

稳定性:2.0 新增(替代 1.x 的四个布尔旗标):2.0 内只增不破。