Share Where I am

[!INFO] Git Commit: f021033 | Updated: 2026-09-02

Share Where I am 是面向 1.7.10 + JourneyMap 的客户端协作模组,允许玩家把自己的位置或视线所指位置以 Waypoint 形式分享给其他玩家,并在世界中临时渲染白色线框 Beacon(3 秒)。

核心依赖:JourneyMap 5 或 JourneyMap 6(两者 API 不兼容,模组在运行时检测版本并分别路由),VisualProspecting + Navigator(可选,用于在全屏地图上分享 VP 图标对应的 Waypoint),UniMixins(必需)。

来源:/home/evlos/a/mirror/Share-Where-I-am/ Mod ID:sharewhereiam

行为一览

  • Insert:在世界中标记一个 3 秒的白色线框 Beacon(基于视线命中方块)
  • Shift + Insert:同上,但坐标用玩家自身位置
  • Ctrl + Insert:广播视线命中位置的 Waypoint(聊天框出现 [Save] [Edit] [Toggle] 按钮)
  • Ctrl + Shift + Insert:广播玩家自身位置的 Waypoint(与 /sharewhereiam 命令同效)
  • FullscreenMap + Insert(JM 6):在 VP 图标上悬停时按下,分享 VP Waypoint

热键列表

  • WaypointShare - INSERT 默认,按住 Shift / Ctrl 触发四种行为

命令列表

第三方模组集成

模组 Mod ID 必需 作用
JourneyMap 5 journeymap 二选一 使用 legacy 内部类(UIManager.getInstance().openWaypointEditor 等)
JourneyMap 6 journeymap 二选一 通过 IClientPlugin + IClientAPI(v2 plugin API)实现
VisualProspecting visualprospecting 否 让 FullscreenMap 上 VP 图标可被 Insert 分享
Navigator navigator 否 提供 UniversalInteractableRenderer 用于读取当前悬停的 VP 图标
UniMixins gtnhmixins 是 必需(required-after:gtnhmixins)

版本检测

JourneyMapVersion.detect() 通过 ClassLoader.getResource 是否能找到 journeymap/api/v2/client/IClientAPI.class(V6)或 journeymap/client/render/map/GridRenderer.class(V5)来区分版本。一旦检测不到,模组整体禁用(Mods.isEnabled() 返回 false)。

数据模型

  • SharedWaypoint 是 JourneyMap 无关的内部 Waypoint 表示,与 JourneyMap 5 的 JSON 形状对齐以便网络互通。包含字段:id/name/icon/x/y/z/r/g/b/enable/type/origin/dimensions/primaryDimension。
  • WaypointUtil.toBase64/fromBase64 在聊天中以 Base64 形式传递 Waypoint。

网络

  • 通道名:sharewhereiam
  • 消息:MessageMarkWaypoint(瞬时 Beacon 广播)、MessageShareWaypoint(聊天分享)
  • 两条消息均注册到 SERVER + CLIENT 两侧,由服务端 sendToAll 转发