Tempora
[!INFO] Git Commit:
4456504| Updated: 2026-10-02
服务器破坏追踪与回滚工具,面向服主的取证 / 还原 / 区域管理套件。
mcmod.info 自述为 Forge based tool for server admins to track griefing. Acts as a slimmed down alternative to prism.,
即精简版 Prism。自身只注册 1 个物品与 1 个内部占位方块,玩法内容为零。
身份
| 属性 | 实测值 |
|---|---|
| modid | tempora(全小写,Tempora.java:38) |
| modName | Tempora |
| 资源域 | tempora |
| 主类 | com.colen.tempora.Tempora |
| Java 文件 | 106(10 170 行) |
| 注册内容 | 1 方块 / 1 物品 / 13 命令 |
| 配置项 | 5(主配置 2 + debug 配置 3,分属两个文件) |
| 网络包 | 4 |
| Mixin | 8 个类,全部已注册(另加 1 个 duck 接口) |
| coremod | mixins.TemporaLoadingPlugin |
| 硬依赖 | 无 |
[!IMPORTANT] 名字里的「时间」是误解来源:Tempora 源自拉丁语 tempus, 但全仓没有任何时间加速 / 时间回溯 / 时停机制。 与时间相关的只有两处:事件记录携带毫秒时间戳,以及 TimeUtils 与两个聊天组件把时间戳显示成「N 小时前」。 「回滚」是反向重放已记录事件,不是操纵游戏内时钟。
[!NOTE]
mcmod.info全文为${modId}/${modName}/${modVersion}/${minecraftVersion}占位符, modid 与版本只能从gradle.properties的modId与生成的Tags.VERSION读取。
[!WARNING] 默认不工作:
shouldTemporaRun默认false,装上后不记录任何东西, 必须手动改配置。但 13 个命令不受该开关保护,会照常注册。
核心列表
主类与代理、logger 注册表、coremod 加载插件
- ClientProxy - 客户端代理,隐藏错误方块的物品形式
- CommonProxy - 注册本 mod 全部内容:1 物品 + 1 方块
- TemporaEvents - mod 级事件分发入口
- TemporaLoadingPlugin -
IFMLLoadingPlugincoremod,挂载 8 个 mixin - TemporaLoggerManager - 11 个位置型 logger 的注册表
- tempora-main -
配置列表
2 项主配置 + 3 项 debug 配置,分属两个文件
- Config - 2 项主配置,
shouldTemporaRun为总开关,默认 false - DebugConfig - 3 项 debug 配置,独立文件
tempora_debug.cfg
方块列表
唯一的方块是内部渲染错误占位方块
- RenderingErrorBlock - 内部占位方块,渲染出错时顶在坐标上
- RenderingErrorItemBlock - 错误方块的 ItemBlock 形式
物品列表
唯一物品
admin_wand,OP 取证棒
- TemporaWand - OP 取证棒,注册名
admin_wand、本地化名tempora_wand
命令列表
13 个 OP 级管理命令:查询、回滚、区域管理
- CreateRegion - 创建具名区域
- TemporaExplode - 回放历史爆炸复现现场
- TemporaHelp - 列出本 mod 全部命令
- HomeChunk - 定位玩家所在区块
- ListRegions - 列出已创建区域
- QueryEvents - 按坐标 + 时间窗 + logger 查询事件
- QuerySQL - 直接对 SQLite 执行 SQL 下钻
- RegionFilter - 按区域过滤记录 / 回滚
- RemoveRegion - 删除区域
- TemporaStackTrace - 在命令执行点抓 Java 调用栈
- TemporaTp - 传送到指定位置 / 时刻(命令名
TEMPORA_TP与其余不一致) - TemporaUndo - 回滚到上一状态
- TemporaUndoRanged - 限定范围与时间窗的回滚
日志器列表
11 个具体 logger + 1 个公共基类
- BlockChangeLogger - 记录任意方块变化,是区域渲染的数据源
- CommandLogger - 记录玩家执行的命令
- EntityDeathLogger - 记录实体死亡
- EntityPositionLogger - 记录实体位置变化
- EntitySpawnLogger - 记录实体生成
- ExplosionLogger - 记录爆炸,供
/tempora_explode回放 - GenericPositionalLogger - 所有位置型 logger 的公共基类,不单独注册
- InventoryLogger - 记录背包变化,是回滚还原物品的依据
- ItemUseLogger - 记录物品使用
- PlayerBlockBreakLogger - 记录玩家破坏方块
- PlayerBlockPlaceLogger - 记录玩家放置方块
- PlayerMovementLogger - 记录玩家移动
网络列表
4 个包,通道
tempora
- PacketRemoveClientRegionByUUID - 服务端 → 客户端,按 UUID 精确移除区域
- PacketRemoveRegionFromClient - 服务端 → 客户端,移除失效区域
- RenderEventPacket - 服务端 → 客户端,下发事件查询结果供世界内高亮
- PacketShowRegionInWorld - 服务端 → 客户端,下发区域用于渲染
Mixin列表
8 个 mixin,全部已注册,另加 1 个 duck 接口
- MixinChunk - 在
Chunk挂钩,捕获区块加载 / 卸载时机 - MixinChunkProviderGenerate - 包裹世界生成,区分生成阶段的事件来源
- MixinEntity - 为
Entity附加 mixin 方法,供实体类 logger 取数 - IEntityMixin - 为
Entity附加方法的 duck 接口(非 mixin 类) - MixinFMLNetworkHandler - FML 网络层挂钩,握手阶段透传连接信息
- MixinGameRegistry - 拦截
GameRegistry注册调用,感知其它 mod 注册了什么 - MixinNetHandlerPlayServer - 服务端连接层挂钩,玩家进出时机落点
- MixinNetworkMonitor - 网络层第二处挂钩点,与
FMLNetworkHandler分工 - MixinStructureStart - 结构生成起点挂钩,归属结构期事件
渲染列表
客户端世界内渲染、HUD 提示与区域存储
- ClientRegionStore - 客户端区域存储,混放服务端同步区与本地预览区
- HudRenderRegionsInWorld - 客户端把区域信息叠加到 HUD 上
- RenderEventsInWorld - 客户端把查询到的事件点画在世界里
- RenderIDsInWorld - 调试:在附近方块中心渲染
ID:META - RenderRegionsInWorld - 客户端把区域画成世界内线框
区域列表
服务端区域注册表与客户端渲染模式
- RegionRenderMode - 区域渲染模式枚举,含
TEMPORA_WAND - TemporaRegionRegistry - 服务端区域注册表,脏时才落盘
- TemporaWorldRegion - 区域数据结构,两角点 + UUID + 渲染模式
工具列表
工具类、logger 枚举与命令基类
- TemporaCommandBase - 命令抽象基类,提供参数校验骨架
- DatabaseUtils - SQLite 底层封装
- GenericUtils - 通用工具,含
shouldTemporaRun()/isServerSide() - LoggerEnum - 11 个具体 logger 的枚举(不含 generic)
- RenderingUtils - 渲染出错时放置错误方块的兜底逻辑
- StackTraceUtils - 抓取并压缩 Java 调用栈
- TimeUtils - 时间戳格式化:相对「多久前」+ hover 绝对时间
聊天列表
自定义时间显示聊天组件
- ChatComponentTimeAbsolute - 绝对时间聊天组件
- ChatComponentTimeRelative - 相对时间聊天组件(客户端侧格式化)
- TemporaChatRegistry - 自定义聊天组件的集中注册
依赖关系
- 硬依赖:无。
@Mod注解未声明dependencies。 - 运行期依赖 GTNHLib(
NumberFormatUtil、AbstractChatComponentCustom、@Config注解), 属库而非 mod,不在本 wiki 收录范围(relation.md无对应行)。 - 数据落在 mod 自己的 SQLite 库中,不依赖任何其它 mod 的数据库。