首次同步HUD

首次同步HUD

标记每个世界的首次——你的第一颗钻石、发现你家的苦力怕、第一次因饥饿而死——并像属于那个世界独有的成就那样宣告它们。客户端侧;适用于任何服务器。

首次同步

进度对每个人来说都是一样的。但你的世界不是。

首次同步会关注那些每个世界仅发生一次的事情——第一颗钻石、你活过的第一个夜晚、第一只发现你房子的苦力怕、第一次真正饿死你——并为每一次都量身打造一个弹出通知。然后它会把这件事记下来:是哪一天、你当时站在哪里、以及这是第几个“第一次”。

几个月后再翻看这本日志,它就成了那个存档的日记。

适用于任何服务器

整个模组都在你的客户端运行。服务器上没有任何东西,也不需要任何权限——服务器甚至无法察觉你安装了它。

这之所以可能,是因为构成一个“首次”的所有信息,客户端本来就已经知晓,否则它就无法渲染游戏:

它注意到什么 如何得知
首次获得某个物品 你自己的物品栏
首次遇到某种生物 在48格范围内、未隐身,并且视线清晰无遮挡
新的生物群系、新的维度 你站立的位置
死亡,以及死因 伤害数据包——真实的伤害类型,而非服务器的文本描述
爆炸,以及是否由苦力怕引起 爆炸数据包,加上观察附近哪些苦力怕正在膨胀
一次真正的交易、一次真正的附魔 交易报价的使用计数器和物品被附魔——而不仅仅是打开界面
深度、高度、降雨、雷暴、日出 普通的世界状态

每个世界一本日志——每个种子也是

日志存放在 <游戏文件夹>/first-time-sync/<世界>.json,每个世界一个文件。

仅靠名字是不够的:服务器在重置地图后会保留其地址。因此,文件还通过一个指纹来标识——即服务器在每次加入时发送给每个客户端的打乱世界种子,也就是原版用来放置生物群系的同一个数字。这个数字对于一个世界是稳定的,对下一个世界则不同,因此同一IP上的新地图会开启一本全新的日志。

通知

一个手绘风格、使用进度语言显示的弹窗,包含更多信息:

  • 按稀有度着色的强调色,从普通到传奇
  • 以物品、生物或地点作为图标
  • 第二行是属于你的:第 12 天 · #7
  • 一个不断减少的时间条,以及落地时扫过的光效
  • 随稀有度变化的声音,从轻柔的叮当声到挑战号角

“首次”事件往往会成批到来——踏入下界会同时触发一个维度、一个生物群系和三种生物——所以它们会排队并逐个出现,而不是堆叠成一片噪音。

日志

按 J 键,或输入 /firsts。可搜索、按类别过滤,并在底部看到尚未发生的灰色条目——首次列表的一半乐趣就在于那些尚未达成的项目。

/firsts - 打开日志。

/firsts recent - 在聊天栏显示最近10条记录

/firsts stats - 各分类的进度

/firsts world - 这是哪个世界,及其指纹

/firsts home set - 在你所站之处标记为家

/firsts export - 将日志导出为 Markdown 格式

/firsts demo - 预览一个通知弹窗

/firsts forget <id> - 删除一条记录

/firsts reset - 清空此世界的日志

这些都是客户端命令。服务器永远不会看到它们被输入。

关于“在家”

“一只苦力怕发现了你的房子”需要知道家在哪里。你的第一张床会自动成为家,也可通过 /firsts home set 手动设置。半径默认为48格,并且标记会记住其所在的维度,因此下界中相同的坐标不会计入。

安装到已经玩过的世界?

加入后的最初两秒是安静的:你口袋里已有的东西,以及你正站立的生物群系,会被记下而不弹出通知。它们并非今天发生的。在那之后,每次发现才算真正的发现。

配置

config/first-time-sync.json。通知弹窗、音效和聊天复制都可以分别关闭;无论何种方式,日志都会持续记录。精心策划的约230个里程碑目录可以扩展为涵盖所有物品、生物群系和生物的完整列表,适合想要全量信息流的玩家——包括模组内容。

诚实的局限

  • 只有你的客户端收到爆炸信息时才会记录,也就是发生在视线范围内的情况。当你在下界时,一只苦力怕夷平你的基地将不会被记录——没有服务器端协助,这无法得知。
  • 生物群系和深度每秒采样一次,因此仅仅擦过稀有生物群系角落半秒钟可能会被遗漏。

要求

Minecraft 26.2 · Fabric Loader 0.19.3+ · Fabric API · Java 25

包含英语和俄语。