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

事件总表


事件类包是否可取消宿主投递时机监听器可读的访问器
TickEvent.Pre / TickEvent.Postcom.seecmd.mod.api.event否主循环每帧一次;Pre 在本帧逻辑更新之前,Post 在其之后、渲染之前deltaSeconds()
SceneChangeEvent.Precom.seecmd.mod.api.event是场景切换的决议阶段(历史栈尚未改动)from()、to()、kind()、params()、isRedirected()、redirectTarget()、redirectParams()
SceneChangeEvent.Postcom.seecmd.mod.api.event否场景切换完成之后(新场景已进入)from()、to()(均为 SceneInfo)
SoundPlayEventcom.seecmd.mod.api.event否宿主成功播放一个音效之后soundId()、path()、category()
SettingsChangedEventcom.seecmd.mod.api.event否宿主保存设置后changedKeys()
GameStartupEventcom.seecmd.mod.api.event否契约:装配结束、进入主循环之前;当前源码未见投递点无(纯通知)
GameShutdownEventcom.seecmd.mod.api.event否契约:释放资源之前;当前源码未见投递点无(纯通知)
SceneUnregisteredEventcom.seecmd.mod.api.event否模组场景注册被归属校验注销成事实之后declaredId()、modId()
GameStartEventcom.seecmd.mod.api.event.gameplay否一局游玩开始时(谱面就绪、音乐启动)context()
GameEndEventcom.seecmd.mod.api.event.gameplay否一局游玩结束时(结算 / 重试 / 退出 / 预览会话关闭)context()
ChartLoadEventcom.seecmd.mod.api.event.gameplay否谱面解析完成、进入可游玩状态时(同帧先于 GameStartEvent)context()
GameplayTickEvent.Pre / GameplayTickEvent.Postcom.seecmd.mod.api.event.gameplay否每个游玩帧各一次;Pre 在本帧游玩逻辑更新之前,Post 在其之后(含倒带重演窗口内的帧)musicTimeMs()、rewinding()、deltaSeconds()、stepIndex()
BeatEventcom.seecmd.mod.api.event.gameplay否游玩帧内拍序号与上一帧不同时(每帧至多一次,正反向跨拍都算)beatIndex()、phase()、bpm()、periodMs()、rewinding()
NoteJudgedEventcom.seecmd.mod.api.event.gameplay否一个音符完成判定时(含长音符结尾判定),且判定已经落地judgeResult()、context()
ComboBreakEventcom.seecmd.mod.api.event.gameplay否连击被打断时(本次 MISS 导致 combo 归零),且打断已经发生context()
PauseEventcom.seecmd.mod.api.event.gameplay是暂停请求受理时(宿主改状态之前)context()
ResumeEventcom.seecmd.mod.api.event.gameplay是恢复请求受理时(宿主改状态之前)context()
RewindEventcom.seecmd.mod.api.event.gameplay否倒带重演窗口开始(BEGIN)/ 结束(END)时各一次phase()、isBegin()、isEnd()、fromMs()、toMs()、durationMs()
GhostHitEventcom.seecmd.mod.api.event.gameplay否回放期幽灵音符被击打并产生表现层反馈时(不计分,宿主不再为此发 SoundPlayEvent)lane()、noteType()、judgment()、musicTimeMs()、note()
HitEffectLifecycleEventcom.seecmd.mod.api.event.gameplay否打击特效实例创建 / 取消 / 自然到期时;每实例恰好一个消亡事件phase()、lane()、noteType()、grade()、startMs()、durationMs()、note()
PreviewSeekEventcom.seecmd.mod.api.event.gameplay否预览会话完成一次确定性跳转后、下一次正常 Tick 之前fromMs()、toMs()、reason()、generation()、context()、durationMs()
KeyEventcom.seecmd.mod.api.event.input是(契约)全局按键分发时(按下 / 抬起 / 长按)keyCode()、type()
MouseEventcom.seecmd.mod.api.event.input是(契约)契约:场景级鼠标分发时;当前宿主未投递type()、x()、y()、button()
LaneInputEvent.Precom.seecmd.mod.api.event.input是本局游玩期间玩家按键映射到轨道、判定之前lane()、keyCode()、musicTimeMs()
LaneInputEvent.Postcom.seecmd.mod.api.event.input否本局游玩期间输入已被消费之后lane()、keyCode()、musicTimeMs()
RenderEvent.Pre / RenderEvent.Postcom.seecmd.mod.api.event.render否每个渲染层内容绘制的前后各一次;共 7 层,每帧 14 次layer()、context()
TrackRenderEvent.Pre / TrackRenderEvent.Postcom.seecmd.mod.api.event.render否轨道渲染器入口 / 出口各一次(只在游玩场景投递)context()、musicTimeMs()、scrollSpeed()、visibleNoteCount()
ResourceReloadEventcom.seecmd.mod.api.event.resource否宿主真实切换语言并完成重载时投递 LANGUAGE;RESOURCES 当前无发布点kind()、detail()
HostCommandEventcom.seecmd.mod.api.event.host否宿主终端执行命令时(宿主事实转播)command()
HostGameResultEventcom.seecmd.mod.api.event.host否结算界面统计定稿时(与 GameEndEvent 时机 / 信息面均不同)chartFile()、cleared()、misses()、perfects()、greats()、maxCombo()、totalScore()、grade()
HostAudioSpeedEventcom.seecmd.mod.api.event.host否全局播放速度变化生效时(局部变速不投递)oldSpeed()、newSpeed()

实现核验补充(按当前宿主源码):