Theseus 模组文档
API 参考 / judge 包:判定管线

JudgeResults


想先跑起来?

这一页是签名与行为参考。构造改写结果的小工具。直接做一遍:教程 · 添加判定等级。

判定结果改写工具类:基于现有 JudgeResult 构造新的不可变实例,供 JudgmentAdjuster 改写结果时使用。三个静态方法分别替换判定等级、判定时刻或两者;note() 与 isHoldEnd() 始终保留。

方法速览

方法用途
withJudgment(JudgeResult, JudgmentKindDefinition)只替换判定等级
withJudgeTime(JudgeResult, long)只替换判定时刻
with(JudgeResult, JudgmentKindDefinition, long)同时替换判定等级与时刻

完整签名

java
public final class JudgeResults {

    public static JudgeResult withJudgment(JudgeResult src, JudgmentKindDefinition judgment);

    public static JudgeResult withJudgeTime(JudgeResult src, long judgeTime);

    public static JudgeResult with(JudgeResult src, JudgmentKindDefinition judgment, long judgeTime);
}

withJudgment(JudgeResult src, JudgmentKindDefinition judgment)

签名:

java
JudgeResult withJudgment(JudgeResult src, JudgmentKindDefinition judgment);

行为:复制 src,只替换 judgment();note()、judgeTime()、isHoldEnd() 原样保留。每次调用构造新的不可变实例。judgment 传入注册表取出的 JudgmentKindDefinition;传 null 会得到 judgment 为 null 的结果(宿主消费端会回退到内置定义,不建议)。

示例:

java
JudgeResult great = JudgeResults.withJudgment(input, greatKind);

withJudgeTime(JudgeResult src, long judgeTime)

签名:

java
JudgeResult withJudgeTime(JudgeResult src, long judgeTime);

行为:复制 src,只替换 judgeTime()(毫秒);其余字段原样保留。宿主会按新时刻重录准度分布。

示例:

java
JudgeResult shifted = JudgeResults.withJudgeTime(input, ctx.musicTimeMs());

with(JudgeResult src, JudgmentKindDefinition judgment, long judgeTime)

签名:

java
JudgeResult with(JudgeResult src, JudgmentKindDefinition judgment, long judgeTime);

行为:复制 src,同时替换 judgment() 与 judgeTime();note() 与 isHoldEnd() 原样保留。等价于连续调用 withJudgment 后 withJudgeTime,但只分配一个实例。

示例:

java
JudgeResult rewritten = JudgeResults.with(input, goodKind, ctx.musicTimeMs());

线程:源码未声明额外线程约束;在宿主的判定线程(游玩/渲染线程)内调用即可。工具类不可实例化(私有构造)。

生命周期阶段:运行期判定改写(JudgmentAdjuster.adjust)内使用;每次判定构造一次,开销可忽略,但不要放进每帧渲染路径。

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