Theseus 模组文档
API 参考 / 事件系统

LaneInputEvent


「玩家按键 → 轨道」这一动作的事件。Pre 在按键被映射到轨道 / 判定之前投递;Post 在输入已被消费之后投递(观察点)。

方法速览

方法用途
lane()轨道序号(从 0 起,已应用当前模式的轨道映射)
keyCode()触发本次输入的按键码
musicTimeMs()本次输入对应的音乐时间

lane()

java
public int lane();

行为:返回轨道序号(从 0 起),取的是应用当前模式 mapLane 之后的判定轨道。

keyCode()

java
public int keyCode();

行为:返回触发本次输入的按键码。

musicTimeMs()

java
long musicTimeMs();

行为:返回本次输入对应的音乐时间(毫秒)。

示例

java
ctx.eventBus().subscribe(LaneInputEvent.Pre.class, EventPriority.HIGHEST, event -> {
    if (event.lane() == 3 && isLaneLocked()) {
        // 只吞掉该轨道上的这次按键;同一按键映射到的其它轨道不受影响
        event.setResult(EventResult.DENY);
    }
});

完整签名

java
public abstract class LaneInputEvent extends Event {
    protected LaneInputEvent(boolean cancellable, int lane, int keyCode, long musicTimeMs);
    public int lane();
    public int keyCode();
    public long musicTimeMs();

    public static final class Pre extends LaneInputEvent {
        public Pre(int lane, int keyCode, long musicTimeMs);
    }

    public static final class Post extends LaneInputEvent {
        public Post(int lane, int keyCode, long musicTimeMs);
    }
}

行为核验:宿主逐轨道处理按键——对每个映射出的轨道先投递 Pre,isDenied() 为真时 continue(只跳过该轨道,不影响同一按键对其余轨道的映射,也不投递该轨道的 Post);否则执行判定,然后投递 Post。Pre 可取消,Post 不可取消。

线程:游玩场景的输入处理线程(游戏线程)。

稳定性:2.0 起冻结,2.x 内只增不破。