Tempora

基本信息

属性 值
类名 com.colen.tempora.Tempora
modid tempora(全小写,Tempora.java:38;gradle.properties 的 modId 同值)
modName Tempora
资源域 tempora
注解 @Mod(modid = Tempora.MODID, version = Tags.VERSION, name = Tempora.MODNAME, acceptedMinecraftVersions = "[1.7.10]")
coremod mixins.TemporaLoadingPlugin(gradle.properties 的 coreModClass)
硬依赖 无(@Mod 未声明 dependencies)
注册内容 1 方块 / 1 物品 / 13 命令

定位

服务器管理者的破坏追踪与回滚工具。mcmod.info 的 description 原文: Forge based tool for server admins to track griefing. Acts as a slimmed down alternative to prism. 即「一个精简版的 Prism」。

[!IMPORTANT] 与「时间」的关系仅限时间戳与回溯,不含任何改变游戏内时间流速的内容。 mod 名 Tempora 源自拉丁语 tempus,但全仓无时间加速 / 时间回溯 / 时停机制。 名字里的 “tempora” 对应的是「记录下来的那一段时间的事件」。

生命周期

阶段 行为
preInit 转发 proxy.preInit
init 转发 proxy.init,并向 FML 总线注册 ServerTickHandler
postInit 转发 proxy.postInit
serverInit 遍历 TemporaLoggerManager.getLoggerList(),对每个 logger 调 registerEvent()(仅当 shouldTemporaRun())
serverStarting 注册 13 个命令;服务端再调 GenericPositionalLogger.onServerStart();TemporaRegionRegistry.loadNow()
serverStopping GenericPositionalLogger.onServerClose() + TemporaRegionRegistry.saveIfDirty();客户端侧 TemporaUndoRanged.onServerClose() / ClientRegionStore.onServerClose() / TemporaStackTrace.clearAll()

实现要点

  • NETWORK 是 newSimpleChannel(MODID),在类静态初始化时就创建(Tempora.java:41),早于 preInit。
  • renderingErrorBlock 是静态字段直接 new(Tempora.java:50),真正注册发生在 CommonProxy, 因此字段在服务端无事件触发时也会被构造。
  • serverStarting 里的命令注册不受 shouldTemporaRun() 保护:即使 mod 未启用,13 个命令照样注册。

相关条目