一个 Minecraft Fabric 模组,用于 Minecraft 1.21.11,提供标记点(路径点)管理和传送功能。支持单人/多人模式,自动记录死亡点、传送位置保存与恢复,公开标记点分享,以及完善的权限控制体系。
Spot:指玩家保存的位置坐标,即 Minecraft 社区常用的 “Waypoint(路径点)”,这里为了说明和模组命令的风格考虑用更简短的“Spot”。
- 标记点管理:添加、删除、重命名和更新标记点(含坐标和朝向)
- 快速传送:传送到保存的标记点或特殊目标(重生点、死亡点和世界出生点)
- 交互式 Spot 列表:表格化显示,支持点击快捷操作
- 自动死亡记录:玩家死亡时自动保存位置,一键返回死亡点
- 公开 Spot(多人模式):将 Spot 分享给其他玩家,支持查看和传送到他人公开的 Spot
- 权限管理:基于 OP 级别的权限控制,支持由白名单控制每个功能的权限配置
- 传送日志审计:服务端记录所有传送和管理操作
- 数据隔离:按存档/服务器独立存储数据
- 本地化翻译:根据游戏语言设置自动切换界面语言
- 确保已安装 Fabric Loader 0.18.4 或更高版本
- 下载本模组的 JAR 文件
- 将 JAR 文件放入
.minecraft/mods文件夹 - 启动游戏
虽然列出了许多命令,但在游戏中使用 /spot list 查看 Spot 列表时,大多数操作(T 传送 / R 删除 / U 更新 / E 重命名 / P 公开)都可以直接点击完成,无需手动输入命令。
| 命令 | 功能 |
|---|---|
/spot add <名称> |
在当前位置添加标记点 |
/spot remove <名称> |
删除指定标记点 |
/spot update <名称> |
更新标记点到当前位置 |
/spot rename <旧名> <新名> |
重命名标记点 |
/spot teleport <名称> |
传送到标记点或特殊目标 |
/spot tp <名称> |
传送到标记点(简写) |
/spot list |
列出所有保存的标记点(包含公开的) |
/spot public <名称> |
公开 Spot(仅多人模式) |
/spot unpublic <名称> |
取消公开 Spot(仅多人模式) |
/spot log list [count] |
查看传送日志(服务端) |
/spot log clear |
清除传送日志(服务端) |
/spot whitelist teleport add|remove|list <玩家名> |
传送白名单管理(OP) |
/spot whitelist public add|remove|list <玩家名> |
公开 Spot 白名单管理(OP) |
/spot whitelist publictp add|remove|list <玩家名> |
公开 Spot 传送白名单管理(OP) |
/spot teleport 和 /spot tp 命令支持以下特殊目标,在输入 <名称> 时可以通过输入 . 和 - 依靠自动补全进行筛选:
| 目标 | 功能 |
|---|---|
.death |
传送到死亡点 |
.respawn |
传送到重生点 |
.spawn |
传送到世界出生点 |
-Spot名-玩家名 |
传送到公开 Spot(仅多人模式) |
传送时的公开 Spot 全名格式:-<Spot名>-<玩家名>,例如 -home-stone_brick
Spot 数据保存在 spotteddog/data/ 目录下:
spotteddog/
├── data/
│ ├── singleplayer/
│ │ └── <存档文件夹名>/
│ │ └── spots.json # 单人模式 Spot
│ │
│ └── multiplayer/
│ └── <服务器文件夹名>/
│ ├── spots.json # 玩家自己的 Spot
│ ├── public_spots.json # 公开 Spot(服务端)
│ ├── teleport_whitelist.json # 传送白名单
│ ├── public_spot_whitelist.json # 公开 Spot 白名单
│ └── public_spot_teleport_whitelist.json # 公开 Spot 传送白名单
公开 Spot 数据保存在服务端 spotteddog/data/multiplayer/<服务器>/public_spots.json 文件中。
服务端配置文件:spotteddog/config/spotteddog_config.json
{
"teleport_cooldown_seconds": 1,
"max_teleports_per_second": 10,
"allow_all_players_teleport": false,
"allow_all_players_public_spot": false,
"allow_all_players_public_spot_teleport": false,
"public_spot_cooldown_seconds": 5,
"max_public_spot_requests_per_second": 10
}| 配置项 | 默认值 | 说明 |
|---|---|---|
teleport_cooldown_seconds |
1 | 玩家个人传送冷却时间(秒) |
max_teleports_per_second |
10 | 全局每秒最大传送请求数 |
allow_all_players_teleport |
false | 是否允许所有玩家使用传送功能 |
allow_all_players_public_spot |
false | 是否允许所有玩家公开/取消公开 Spot |
allow_all_players_public_spot_teleport |
false | 是否允许所有玩家传送到公开 Spot |
public_spot_cooldown_seconds |
5 | 公开/取消公开 Spot 的玩家冷却时间(秒) |
max_public_spot_requests_per_second |
10 | 全局每秒最大公开/取消公开请求数 |
权限检查优先级(从高到低):
- OP 玩家:始终拥有所有权限
- 白名单玩家:在对应白名单中则允许
- 全局配置:
allow_all_players_*为 true 则允许 - 默认拒绝:不满足以上条件则拒绝
考虑到可能存在临时的OP,为防止权限泄漏,OP 无法修改自己或其他 OP 的白名单状态。
白名单提供细粒度的权限控制。当全局配置 allow_all_players_* 为 false 时,白名单中的玩家仍可使用对应功能。
白名单文件位于服务端 spotteddog/data/multiplayer/<服务器>/ 目录:
teleport_whitelist.json- 传送白名单public_spot_whitelist.json- 公开 Spot 白名单public_spot_teleport_whitelist.json- 公开 Spot 传送白名单
| 版本 | 变更 |
|---|---|
| 5.4.1 | 公开 Spot 列表排序优化、Spot 操作后自动刷新列表 |
| 5.4.0-SNAPSHOT | 传送日志审计功能、事件系统重构 |
| 5.3.0-SNAPSHOT | 提取表格构建为 SpotTableBuilder、合并公开 Spot 列表到 /spot list、添加交互式操作列 |
| 5.1.0-SNAPSHOT | 白名单权限管理功能、OP 自我保护限制 |
| 5.0.0-SNAPSHOT | 权限管理、独立的公开 Spot 冷却、传送到公开 Spot 权限 |
| 4.3.0-SNAPSHOT | 中文支持、列表预加载、服务端冷却限制 |
| 4.2.0-SNAPSHOT | 数据结构重构、公开 Spot 同步更新、移除 isPublic 字段 |
| 4.1.0-SNAPSHOT | 公开 Spot 功能、移除成功提示消息 |
| 4.0.0-SNAPSHOT | 世界出生点修复、服务端安全优化、单人模式消息优化 |
src/
├── main/
│ └── java/io/github/stone_brick/spotteddog/
│ ├── Spotteddog.java # 主模组入口
│ ├── event/ # 事件系统
│ │ └── AdminLogEvent.java # 管理日志事件
│ ├── network/
│ │ ├── TeleportType.java # 传送类型枚举
│ │ ├── c2s/ # 客户端到服务端负载
│ │ │ ├── TeleportRequestC2SPayload.java
│ │ │ ├── PublicSpotActionC2SPayload.java
│ │ │ ├── PublicSpotListC2SPayload.java
│ │ │ ├── PublicSpotTeleportC2SPayload.java
│ │ │ ├── PublicSpotUpdateC2SPayload.java
│ │ │ └── WhitelistAdminC2SPayload.java
│ │ └── s2c/ # 服务端到客户端负载
│ │ ├── TeleportConfirmS2CPayload.java
│ │ └── PublicSpotListS2CPayload.java
│ └── server/
│ ├── config/
│ │ ├── ConfigManager.java # 配置文件管理
│ │ └── CooldownManager.java # 冷却时间管理
│ ├── permission/
│ │ ├── PermissionManager.java # 权限管理
│ │ └── WhitelistManager.java # 白名单管理
│ ├── data/
│ │ ├── PublicSpot.java # 公开 Spot 数据模型
│ │ └── PublicSpotManager.java # 公开 Spot 存储管理
│ └── network/
│ ├── TeleportRequestHandler.java # 服务端传送请求处理
│ ├── PublicSpotHandler.java # 公开 Spot 请求处理
│ ├── WhitelistAdminHandler.java # 白名单管理请求处理
│ └── TeleportLogHandler.java # 传送日志处理
└── client/
└── java/io/github/stone_brick/spotteddog/client/
├── SpotteddogClient.java # 客户端入口
├── command/
│ ├── SpotCommand.java # 命令实现
│ ├── WhitelistAdminCommand.java # 白名单管理命令
│ ├── TeleportHandler.java # 传送处理入口
│ ├── TeleportStrategy.java # 传送策略接口
│ ├── SingleplayerTeleportStrategy.java
│ └── MultiplayerTeleportStrategy.java
├── data/
│ ├── PlayerDataManager.java # 数据管理
│ └── Spot.java # 标记点数据模型
├── ui/
│ └── SpotTableBuilder.java # 表格构建器
└── network/
├── TeleportConfirmHandler.java # 客户端传送确认处理
├── PublicSpotListHandler.java # 公开 Spot 列表处理
└── WhitelistAdminHandler.java # 白名单管理请求发送
- Minecraft: 1.21.11
- Java: 21
- Fabric Loader: 0.18.4+
- Fabric API: 0.141.1+1.21.11
- 构建工具: Gradle (fabric-loom 插件)