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 个命令照样注册。
相关条目
- CommonProxy - 真正注册方块与物品的地方
- TemporaLoggerManager - 11 个 logger 的注册表
- Config -
shouldTemporaRun开关 - TemporaStackTrace -
/tempora_stacktrace - TemporaUndo -
/tempora_undo