时间事件
Estimated reading time: 5 minutes时间事件模块 (TimeEvents) 是动态管理系统的一部分,用于处理游戏中的时间相关事件。支持按特定时间点或时间间隔(如每秒、每分、每小时、每天等)以及时间旅行时触发。
请使用 maplebirch.dynamic.regTimeEvent(底层管理器为 maplebirch.dynamic.Time)。若需兼容仍引用旧「简易框架」的脚本,可使用全局 TimeEvent 类:其内部会桥接到 regTimeEvent(见 快速开始)。
游戏版本与 v3.2.5
框架 boot.json 将 GameVersion 依赖设为 >=0.5.9.7。v3.2.5 在该版本线上修复了时间事件相关缺陷;编写跨版本 Mod 时请在自身 dependenceInfo 中与之一致,避免在未支持的游戏构建上运行。
v4.0.2 时间系统改进
v4.0.2 重写了时间推进与时间旅行的底层逻辑,主要变更:
- 减少时间推进冲突:
handleTimePass不再自行保存原始Time.pass,改为由Time模块统一管理vanillaTime引用,避免与DoLTimeWrapperAddon等插件互相覆盖。 - 新增
MIN_DATE校验:handleTimePass和handleTimeTravel均会校验目标时间戳是否在[MIN_DATE, MAX_DATE]范围内;timeTravel在目标无效时会抛出错误而非静默失败。 - 暴露手动 Patch 方法:
TimeManager新增patchDateTime(DateTimeClass)和patchTime(TimeObject)公开方法,允许高级用例自行控制 DateTime / Time 的 patch 时机。 TimeConstants公开:maplebirch.dynamic.Time.TimeConstants现在可在外部访问,包含MAX_DATE和MIN_DATE等常量。- 跨段落时间回退改善:
handleTimeTravel不再调用原始timeTravel,直接设置目标日期后再触发事件,减少与 DoL 内置时间旅行逻辑的冲突。
核心 API
regTimeEvent(type, eventId, options)
注册一个新的时间事件。
- @param
type(string): 事件类型 —onSec、onMin、onHour、onDay、onWeek、onMonth、onYear、onBefore、onThread、onAfter、onTimeTravel - @param
eventId(string): 事件唯一标识符 - @param
options(TimeEventOptions): 事件配置选项 - @return
boolean: 是否成功注册
delTimeEvent(type, eventId)
注销已注册的时间事件。
timeTravel(options)
将游戏时间向前或向后跳跃。
事件配置选项
时间数据对象 (TimeData)
事件回调函数接收的 data 参数包含:
