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 触发四种行为
命令列表
- /savewaypoint - 从 Base64 Waypoint 代码保存到 JourneyMap
- /sharewhereiam - 把玩家自身位置广播为 Waypoint
- /toggletempbeacon - 切换 Waypoint 为临时 Beacon(仅 JM 6 有效)
第三方模组集成
| 模组 | 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转发