定位栏重做

定位栏重做

这个模组默认关闭定位栏,并添加了一个定位石来揭示其他玩家的位置。它会将用户的精确位置展示给整个服务器,因此建议谨慎使用。

定位栏重做


这个模组的作用

它将位置从恒定信息变为一种资源。

对于所有人来说,定位栏被永久隐藏,并始终保持空白。玩家只有消耗一个定位石才能出现在定位栏上——而使用定位石动静很大。

当你使用定位石时,持续十秒:

  • 你会在定位栏上看到同一维度中的所有其他玩家。
  • 其他所有人会在他们的定位栏上看到你。
  • 整个服务器会收到一条标题公告,显示你的名字、所在维度以及精确坐标,同时聊天栏中也会有记录留存。
              Alice 使用了定位石
        主世界  ·  X: 1247   Y: 63   Z: -892

定位石

可重复使用,默认冷却时间为五分钟。合成配方中的材料全部可再生,因此不会因战利品运气不佳而无法使用该机制。

A N A     A = 紫水晶碎片
N C N     N = 末影之眼
A N A     C = 指南针

冷却时间存储在玩家数据中,而非原版的物品冷却映射表中,因此死亡、重连和服务器重启都不会重置冷却。死亡不等于重置。

隐藏效果再次生效

原版中所有可让你不出现在定位栏上的方法,同样也能让你不被扫描到:

  • 潜行
  • 隐身
  • 雕刻南瓜
  • 旁观模式

以上四种方式都基于相同的底层机制运作,本模组尊重而非绕过这些机制。因此,戴着南瓜蹲在坑里再次成为躲避追踪的可行方案——而一次扫描也永远无法揭露正在旁观的管理员。

另一方面,你自己的暴露是无法躲避的。你无法通过潜行来避开公告,而在暴露期间退出游戏,会在你断线位置留下一个标记,直到剩余时间结束。

配置

服务端配置,并自动同步到客户端。

选项 默认值 作用
suppressLocatorBar true 总开关。设为 false 可在不卸载模组的情况下恢复原版定位栏。
revealDurationSeconds 10 一颗定位石维持定位栏亮起的时间。
cooldownSeconds 300 使用后的冷却时间。
revealRadius 0 最大暴露距离(以方块为单位)。0 表示无限制。
scanPrecision EXACT 使用者看到他人的精度:EXACT、CHUNK 或 DIRECTION。
scanInaccuracyBlocks 0 将每个扫描到的标记偏移最多 N 个方块。
markerWidthPixels 54 定位栏上标记的宽度。原版为 9;定位栏总宽 182。
revealUserToOthers true 使用者是否也会出现在其他人的定位栏上。
exposurePrecision EXACT 其他人看到使用者时的精度。
broadcastCoordinates true 在公告中包含精确坐标。
broadcastToChat true 同时输出到聊天栏,以便保留在滚动记录中。
consumeOnUse false 使用时销毁定位石,使其变为消耗品。

调优建议

scanPrecision 是最有力的调节选项。CHUNK 会将目标缩小到一个 16×16 的区域;DIRECTION 只给出方位,不提供距离和坐标,将定位石从 GPS 变成指南针。这会带来完全不同的游戏体验,值得在你确定需要精确位置之前先尝试一下。

scanInaccuracyBlocks 和 markerWidthPixels 功能相关但各有侧重。误差改变的是数据——标记确实被偏移了,偏移量在每次扫描时随机生成并保持不变,因此无法在十秒内通过求平均来消除。宽度只改变绘制效果,使标记覆盖定位栏上的一段弧形而非一个点。建议两者结合使用:仅靠宽度看起来模糊但底层仍然精确,仅靠误差则是模糊但看起来不明显。

如果扫描频率太高,请先提高 cooldownSeconds,再考虑缩短 revealDurationSeconds。短暂的暴露只会让人沮丧;长时间的冷却则让每次扫描都成为真正的决策。

安装

服务器和每台客户端都需要安装——它注册了一个真实物品,因此原版客户端会在注册表同步时被拒绝连接。

备注

  • 航路点仅限同一维度。 这是原版行为;服务器为每个维度维护独立的航路点管理器。公告会标明维度名称,并有意不向其他维度的玩家提供坐标——否则在下界使用定位石会公开一组数字,任何人将其乘以八就能找到你的主世界基地。
  • /gamerule locatorBar false 仍然有效,会连同定位石一起禁用所有相关功能。
  • 卸载是干净彻底的。 抑制效果是通过临时属性修饰符实现的,从不写入玩家数据,因此移除模组后立即恢复原版行为,不会让所有人永远无法被追踪。
  • 该模组几乎全链路都是服务端逻辑。唯一的客户端 Mixin 仅用于加宽标记,因为该尺寸在原版渲染器中被硬编码。将 markerWidthPixels 保持为 9 则不会有任何改动。

常见问题

会更新到更新的 Minecraft 版本吗?

有可能,但我不能承诺具体时间。这是一个个人项目,只有在我有时间且有兴趣时才会进行开发。主要 Minecraft 版本可能会得到移植——我也希望能够保持更新——但请将每次更新视为顺其自然发生的事,而非既定计划。如果你想要的版本缺失,那并不代表被放弃了,只是还没轮到它。

会向后移植到旧版本吗?

不会。该模组依赖数据驱动的附魔系统以及仅存在于近期版本中的 API;旧版本需要大规模重写而非重新编译。

接受功能请求 / Bug 报告吗?

欢迎 Bug 报告,它们非常有用——尤其是涉及物品丢失或复制的问题,我会严肃对待。功能请求我会阅读,但我是按照一个相当具体的设计理念来构建这个模组的,"添加一个能实现 X 的附魔"通常只有符合情境与权衡的主题时才会被采纳。

Fabric / Forge 移植?

没有计划。它是基于 NeoForge 专属 API 构建的,因此这将是重写而非移植。

可以在整合包中使用吗?

可以。它采用 MIT 许可证——可以打包、调整、再分发。无需许可,也不强制署名,当然署名总是令人感激的。

玩家需要安装,还是只需要服务器安装?

两者都需要。附魔从服务器的注册表同步,因此客户端也需要安装该模组。

NeoForge 更新后出了问题。

很有可能,而且并不意外——这个 Minecraft 版本的 NeoForge 仍处于测试阶段,因此底层 API 仍在变动。请报告问题并附上你的 NeoForge 版本。