Player Teleport
Player Teleport is a Fabric server-first mod that lets regular players teleport to other online players without requiring operator permission.
The interaction model is intentionally minimal:
- use
/ptto view online players - click chat buttons to teleport
- use simple commands to decide who can teleport to you
- let administrators choose between direct teleport and request-based confirmation
- let administrators manage global behavior and team rules
Contents
- Overview
- Interaction Design
- Permission Rules
- Compatibility
- Dependencies
- Installation
- Player Commands
- Admin Commands
- Configuration
- Development and Build
Overview
- paged online player list
- clickable teleport actions in chat
- online player search
- random teleport to an eligible player
- each player can directly allow or deny who may teleport to them
- optional target approval before teleport happens
- target players can approve or reject requests through chat buttons or commands
- separate outgoing and incoming rules
- whitelist and blacklist support
- admin-configurable team teleport shortcuts
- admin-configurable global switches, cross-dimension behavior, request timeout, random teleport, page size, and cooldown
- persistent storage for player rules and cached player names
Interaction Design
Player Experience
- Run
/ptto open the online player list - Eligible targets show a green clickable button
- Ineligible targets show a direct reason instead
- The header includes quick buttons for
randomandrules - Page navigation is handled through
previousandnextbuttons - Use
/pt allow <player>or/pt deny <player>for direct control over who may teleport to you - When approval mode is enabled, teleport attempts create a request instead of teleporting immediately
- The target player can use chat buttons or
/pt accept <player>and/pt reject <player>to respond
Admin Experience
- Use
/ptadminto inspect current global settings - Use
/ptadmin set ...to update global configuration - Use
/ptadmin player <player> resetto reset one player's rules - Configure team-based shortcuts such as same-team bypass or same-team-only teleport
- Configure whether teleport requires target approval and how long requests remain valid
Permission Rules
A teleport is allowed only when all of the following checks pass:
- the global feature is enabled
- cross-dimension teleport is allowed when needed
- same-team-only restrictions are satisfied when enabled
- the source player is not on cooldown
- the source player's outgoing rule allows the target
- the target player's incoming rule allows the source
- when approval mode is enabled, the target accepts the request before it expires
Rule Modes
| Mode | Meaning |
|---|---|
all |
allow everyone |
none |
deny everyone |
whitelist |
allow only listed players |
blacklist |
deny listed players and allow the rest |
Rule Directions
| Direction | Meaning |
|---|---|
outgoing |
who I can teleport to |
incoming |
who can teleport to me |
Team Rules
Administrators can configure teleport behavior around vanilla scoreboard teams:
allowSameTeamBypassRules = true: same-team players bypass personal outgoing and incoming checkssameTeamOnly = true: teleport is allowed only between players on the same team
Compatibility
| Item | Requirement |
|---|---|
| Minecraft | 1.21 to 1.21.11 |
| Fabric Loader | 0.16.0+ |
| Java | 21+ |
| Fabric API | Required |
| Fabric Language Kotlin | Required |
The project currently targets Minecraft 1.21.11.
Dependencies
Install the following dependencies into the target mods directory together with this mod:
| Dependency | Required | Notes |
|---|---|---|
| Fabric API | Yes | Provides Fabric commands and runtime APIs |
| Fabric Language Kotlin | Yes | Required because this mod is written in Kotlin |
Installation
Server-first Usage
This mod is designed primarily as a server-side mod:
- Dedicated server: normally only the server needs this mod and its dependencies
- Singleplayer: local installation is still required because singleplayer uses an integrated server
Player Commands
| Command | Description |
|---|---|
/pt |
Show the first page of the online player list |
/pt page <page> |
Show a specific page |
/pt search <keyword> |
Search online players |
/pt search <keyword> <page> |
Search with pagination |
/pt tp <player> |
Teleport directly, or send a request when approval mode is enabled |
/pt random |
Teleport randomly to an eligible player |
/pt rules |
Show your current rule summary |
/pt allow <player> |
Directly allow a player to teleport to you and switch to incoming whitelist mode |
/pt deny <player> |
Directly deny a player from teleporting to you and switch to incoming blacklist mode |
/pt accept <player> |
Accept a pending teleport request |
/pt reject <player> |
Reject a pending teleport request |
/pt mode outgoing <mode> |
Set your outgoing mode |
/pt mode incoming <mode> |
Set your incoming mode |
/pt add outgoing <player> |
Add a player to your outgoing list |
/pt add incoming <player> |
Add a player to your incoming list |
/pt remove outgoing <player> |
Remove a player from your outgoing list |
/pt remove incoming <player> |
Remove a player from your incoming list |
Admin Commands
| Command | Description |
|---|---|
/ptadmin |
Show the current global config summary |
/ptadmin reload |
Reload the config file |
| `/ptadmin set enabled <true | false>` |
| `/ptadmin set allowCrossDimension <true | false>` |
| `/ptadmin set allowRandom <true | false>` |
| `/ptadmin set requireTargetApproval <true | false>` |
/ptadmin set requestTimeoutSeconds <5-120> |
Set request expiration time |
| `/ptadmin set allowSameTeamBypassRules <true | false>` |
| `/ptadmin set sameTeamOnly <true | false>` |
/ptadmin set pageSize <4-20> |
Set page size |
/ptadmin set cooldownSeconds <0-300> |
Set teleport cooldown |
/ptadmin set defaultOutgoing <mode> |
Set the default outgoing mode for new players |
/ptadmin set defaultIncoming <mode> |
Set the default incoming mode for new players |
/ptadmin player <player> reset |
Reset one player's rules |
Configuration
Config file path:
config/player-teleport.json
Default key settings:
{
"enabled": true,
"allowCrossDimension": true,
"allowRandom": true,
"requireTargetApproval": false,
"requestTimeoutSeconds": 20,
"allowSameTeamBypassRules": false,
"sameTeamOnly": false,
"pageSize": 8,
"cooldownSeconds": 3,
"defaultOutgoingMode": "ALL",
"defaultIncomingMode": "ALL"
}
Notes:
playerNamescaches player display names for cleaner list outputplayersstores outgoing and incoming rules by UUID- The direct
allowanddenycommands operate on incoming rules - When
requireTargetApproval = true, regular teleport actions become request-based
中文
Player Teleport 是一个 Fabric 服务端优先模组,用于让普通玩家在没有 OP 权限的情况下,快速传送到其他在线玩家身边。
设计目标是把操作压缩到最少:
- 用
/pt查看在线玩家列表 - 直接点击聊天按钮完成传送
- 用简单命令决定谁可以传送到自己身边
- 管理员可选择“直接传送”或“请求后确认”
- 由管理员统一控制全局行为和队伍规则
目录
功能概览
- 在线玩家分页展示
- 聊天消息点击传送
- 搜索在线玩家
- 随机传送到当前可用玩家
- 每个玩家都可以直接允许或禁止指定玩家传送到自己身边
- 支持管理员开启“目标玩家确认后才传送”
- 目标玩家可通过聊天点击或命令同意、拒绝传送请求
- 发送规则与接收规则分离
- 支持白名单与黑名单
- 支持管理员配置同队传送快捷规则
- 管理员可配置全局开关、跨维度、随机传送、请求超时、分页大小和冷却时间
- 玩家规则与名称缓存持久化保存
交互设计
玩家视角
- 输入
/pt即可查看在线玩家列表 - 可传送的目标会显示绿色点击按钮
- 不可传送的目标会直接显示原因
- 页眉中带有
随机和规则快捷按钮 - 翻页使用
上一页和下一页按钮 - 如需直接控制“谁能传送到我”,可直接使用
/pt allow <玩家>或/pt deny <玩家> - 如果服务器开启了传送确认,发起传送后会先向目标玩家发送请求
- 目标玩家可点击聊天中的
同意/拒绝,或使用/pt accept <玩家>、/pt reject <玩家>处理请求
管理员视角
- 使用
/ptadmin查看当前全局配置摘要 - 使用
/ptadmin set ...修改全局配置 - 使用
/ptadmin player <玩家> reset重置单个玩家的传送规则 - 可配置“同队可无视个人规则传送”或“仅同队可传送”
- 可配置传送是否必须经过目标玩家确认
权限规则
一次传送是否允许,由以下条件共同决定:
- 全局功能是否开启
- 是否允许跨维度传送
- 是否被限制为仅同队玩家可传送
- 发起者是否处于冷却中
- 发起者的发送规则是否允许目标玩家
- 目标玩家的接收规则是否允许发起者
- 如果开启确认模式,目标玩家是否在超时时间内同意请求
规则模式
| 模式 | 含义 |
|---|---|
all |
全部允许 |
none |
全部拒绝 |
whitelist |
仅名单内允许 |
blacklist |
名单内拒绝,其余允许 |
规则方向
| 方向 | 含义 |
|---|---|
outgoing |
我能传送到谁 |
incoming |
谁能传送到我 |
队伍规则
管理员可通过全局配置控制基于原版记分板队伍的传送行为:
allowSameTeamBypassRules = true:同队玩家可跳过双方个人规则检查sameTeamOnly = true:仅允许同队玩家之间传送
兼容性
| 项目 | 要求 |
|---|---|
| Minecraft | 1.21 到 1.21.11 |
| Fabric Loader | 0.16.0+ |
| Java | 21+ |
| Fabric API | 必需 |
| Fabric Language Kotlin | 必需 |
当前工程以 Minecraft 1.21.11 为主目标版本。
依赖
请确保以下依赖与本模组一起安装到对应环境的 mods 目录:
| 依赖 | 是否必需 | 说明 |
|---|---|---|
| Fabric API | 必需 | 提供 Fabric 命令与运行时 API |
| Fabric Language Kotlin | 必需 | 本模组使用 Kotlin 编写,缺失时无法加载 |
安装方式
服务端优先
本模组优先按服务端模组使用:
- 专用服务器:通常只需服务端安装本模组和依赖,客户端不需要安装
- 单人游戏:仍需本地安装,因为单人模式本质上运行的是内置服务器
玩家命令
| 命令 | 说明 |
|---|---|
/pt |
查看在线玩家列表第一页 |
/pt page <页码> |
查看指定页 |
/pt search <关键字> |
搜索在线玩家 |
/pt search <关键字> <页码> |
搜索结果分页 |
/pt tp <玩家> |
直接传送到指定玩家身边,或在确认模式下发送请求 |
/pt random |
随机传送到一个当前可用玩家 |
/pt rules |
查看自己的当前规则 |
/pt allow <玩家> |
直接允许指定玩家传送到你身边,并切换为接收白名单模式 |
/pt deny <玩家> |
直接禁止指定玩家传送到你身边,并切换为接收黑名单模式 |
/pt accept <玩家> |
同意指定玩家的传送请求 |
/pt reject <玩家> |
拒绝指定玩家的传送请求 |
/pt mode outgoing <模式> |
设置发送规则模式 |
/pt mode incoming <模式> |
设置接收规则模式 |
/pt add outgoing <玩家> |
将玩家加入发送名单 |
/pt add incoming <玩家> |
将玩家加入接收名单 |
/pt remove outgoing <玩家> |
将玩家移出发送名单 |
/pt remove incoming <玩家> |
将玩家移出接收名单 |
管理员命令
| 命令 | 说明 |
|---|---|
/ptadmin |
查看当前全局配置摘要 |
/ptadmin reload |
重载配置文件 |
| `/ptadmin set enabled <true | false>` |
| `/ptadmin set allowCrossDimension <true | false>` |
| `/ptadmin set allowRandom <true | false>` |
| `/ptadmin set requireTargetApproval <true | false>` |
/ptadmin set requestTimeoutSeconds <5-120> |
配置传送请求过期时间 |
| `/ptadmin set allowSameTeamBypassRules <true | false>` |
| `/ptadmin set sameTeamOnly <true | false>` |
/ptadmin set pageSize <4-20> |
设置每页显示数量 |
/ptadmin set cooldownSeconds <0-300> |
设置传送冷却时间 |
/ptadmin set defaultOutgoing <模式> |
设置新玩家默认发送模式 |
/ptadmin set defaultIncoming <模式> |
设置新玩家默认接收模式 |
/ptadmin player <玩家> reset |
重置指定玩家的规则 |
配置说明
配置文件路径:
config/player-teleport.json
默认关键配置:
{
"enabled": true,
"allowCrossDimension": true,
"allowRandom": true,
"requireTargetApproval": false,
"requestTimeoutSeconds": 20,
"allowSameTeamBypassRules": false,
"sameTeamOnly": false,
"pageSize": 8,
"cooldownSeconds": 3,
"defaultOutgoingMode": "ALL",
"defaultIncomingMode": "ALL"
}
说明:
playerNames用于缓存玩家显示名,方便在名单中展示players使用 UUID 作为键保存每个玩家的发送与接收规则- 直接命令
allow和deny实际作用于接收规则 requireTargetApproval = true时,普通传送会先进入请求确认流程
External resources
Project members

xjuunn
Member

