ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

我的世界TP指令全解析:从基础语法到命令方块与权限管理

我的世界TP指令全解析:从基础语法到命令方块与权限管理 先说个场景服务器群里有人喊谁把我拉回去你打开聊天框敲/tp结果要么显示没有权限要么把自己送到半空中摔死。TP指令在《我的世界》里的地位基本等于出门右转的传送门但凡是服务器玩久了的人没有谁没在它上面踩过坑。这篇就专门把TP指令讲透从最基础的怎么输讲到命令方块、权限和选择器新手能照着抄管理员也能查漏补缺。1. 基础语法全解析先从四条最常用的命令说起1.1 四条指令覆盖九成日常场景先说结论如果你只想记住最常用的TP指令下面这四条就够用了/tp x y z把执行指令的人送到指定坐标。/tp 玩家名 x y z把某个玩家送到指定坐标。/tp 玩家名 另一个玩家名把第一个玩家传到第二个玩家身边。/tp a x y z把服务器里所有玩家都送到指定坐标。第一条和第二条的区别就是传自己和传别人。在聊天框里直接输入/tp 100 64 100动的只有你自己想要动别人必须在最前面先写目标玩家名再写目的地坐标。这个顺序是从指令系统的基础逻辑里来的先声明操作对象再声明操作结果。很多新手搞混的根源就是把这个顺序记反了明明想传别人结果写成了/tp 100 64 100 玩家名系统当然报错。第四条里的a属于选择器后面会详细讲。这里先提醒一句a的意思是所有玩家一旦写错或选错参数全服的人都会被你瞬间送到同一个点轻则挤在一起互相卡位重则集体掉进岩浆或者虚空。管理服务器的时候输入a之前最好先停顿一秒想想后果。1.2 版本差异1.13 是个大分水岭很多老玩家是从很早的版本一路玩过来的所以网上流传的教程经常打架根本原因就是版本语法不一样。在 1.13 之前TP指令的语法是必须指定一个目标和目的地直接写/tp 100 64 100在旧版本里会报找不到玩家 100因为系统把第一个参数当成玩家名了。1.13 以后/tp和/teleport合并新增了不写目标、默认传送自己的写法也就是现在我们最常用的/tp 坐标。这个变化导致了一个很典型的翻车场景一个 1.12 的玩家跑到新版本服务器教程底下留言说/tp 100 64 100根本不能用另一个 1.13 的玩家反过来在旧版本教程下面吵着说直接传坐标就行。其实两边都对只是版本不同。真正动手前先确认自己服务端或者单机存档是什么版本能少走好多弯路。1.3 认识选择器p、a、r、e、s不想每次打一长串玩家名可以用选择器代替这也是服务器指令里最实用的技巧之一p距离执行位置最近的玩家。a所有玩家。r随机玩家。e所有实体包括动物、怪物、掉落物、箭。s指令的执行者通常是你自己命令方块里就是命令方块本身。选择器还能加条件比如e[typezombie]只选僵尸e[type!player]选所有非玩家实体p[distance..10]选十格内最近的玩家。这些语法在后面的实操里非常有用尤其是命令方块传送阵基本离不开。不过选择器是双刃剑。a是全服e是包括掉落物在内的所有实体不加过滤条件直接传送服务器的负载会瞬间飙升人数一多甚至会把服卡崩。用选择器的时候能缩小范围就尽量缩小这是管理员的必修课。2. 坐标系统深度拆解绝对坐标、相对坐标、局部坐标2.1 绝对坐标F3 是你的定位神器绝对坐标就是世界里的固定位置格式是三个数字x y z。x 对应东西方向z 对应南北方向y 是高度。地表大约在 y64 附近1.18 之后地下挖到负 y 很正常。在 Java 版里按 F3 打开调试屏幕左上角会显示Block: 100 64 100这样的数字这就是你当前脚底的方块坐标。基岩版在设置里打开显示坐标界面左上角同样能看到。绝对坐标的好处是稳定不管谁执行命令只要坐标一样传送目的地就完全一样适合做固定传送点、出生点、副本入口。一个很容易忽略的点y 坐标决定着你是站在地上、还是被埋在地里、或者是悬在半空。很多新手传送到一个地方后发现自己在土里窒息就是因为 y 写低了。另外1.18 之后的世界增加了负高度层如果把 y 写成-100会直接掉进基岩层以下的虚空区域基本等于判死刑。所以宁可先传送到 y100 的高空观察一下也别贸然把 y 设成看起来很合理的低数值。2.2 相对坐标波浪号 ~ 的偏移逻辑相对坐标用波浪号~表示写法是~10 ~ ~-5意思是在当前位置的基础上往 x 方向偏移 10 格y 不变z 方向偏移 -5 格。多个前缀也可以比如~2 ~3 ~就是 x 偏移 2、y 偏移 3、z 不变。相对坐标的关键在于执行者是谁。如果你在聊天框里输入/tp 玩家名 ~ ~3 ~基准点是你自己站着的位置那么目标玩家会被传到离你头顶上方三格的地方但如果这条指令写在命令方块里基准点就变成了命令方块本身。这个差异坑过不少人尤其是做传送阵的时候明明想让玩家传到头顶结果全传到命令方块的脚下。相对坐标最常用的场景是把不对位置的玩家拉出来。比如某个玩家卡在洞里你不知道他的具体坐标只要执行/tp 玩家名 ~ ~5 ~他就被原地抬高五格大多数情况下能直接脱困。用这种指令不需要精确定位只需要知道操作者和基准点的相对关系。2.3 局部坐标脱字符 ^ 和视角方向有关局部坐标用^表示它也是偏移但参照系不是世界方向而是执行者的视线方向。三个位移分量分别对应左、上、前即^左 ^上 ^前。比如/tp p ^10 ^ ^意思是把最近的玩家往他面朝的方向传送 10 格。局部坐标在普通跑路里很少用到但在建筑辅助、小游戏、跑酷地图里非常有用。比如做个推人机关让踩中踏板的玩家沿着他当时的视野方向飞出去一段距离用绝对坐标要算半天角度用局部坐标一行写完。要注意的是执行者的视线方向如果朝上或者朝下局部坐标的前也会跟着朝上或朝下传送点可能就跑到天上去或者扎进地里了。所以使用局部坐标之前最好确认执行者的视角是平的或者干脆设计成抬头低头都不会误触的结构。2.4 坐标选型什么时候用哪种三种坐标不是随便选的选错就会得到完全不同的结果固定传送点、出生点、副本入口用绝对坐标。因为它是世界里的固定锚点任何人执行都指哪传哪。把玩家从卡住的位置拉出来、相对队友抬升高度用相对坐标。因为这类场景往往不知道具体坐标只知道上下左右偏几格。沿着视线传送、做机关用局部坐标。因为它绑定视角方向适合做定向弹射。一句话总结绝对坐标管地方相对坐标管偏移局部坐标管朝向。你要是拿相对坐标去建固定传送点每一次执行出来的位置都会不一样维护起来相当头疼。3. 让传送更顺手朝向设定、别名映射与版本兼容3.1 传送后的朝向facing 参数默认情况下传送到目的地后你会保持原来的转身方向也就是面朝哪里不变。想让玩家传过去后面朝某个方向可以用facing参数。Java 版 1.13 之后的写法是/tp 玩家名 x y z facing 目标x 目标y 目标z作用就是让玩家传送到指定坐标后扭头看向世界的另一个位置。比如你把一个玩家传送到观景台楼顶然后让他面朝出生点的方向可以写成/tp 玩家名 100 120 200 facing 0 64 0facing后面还能接实体比如facing entity X让他传送到位置后始终看向某位玩家。这种写法比手动填角度直观太多了适合做观景台、展览馆、剧情演出。如果是旧版本facing不存在只能在坐标后面补两个角度数字一个是水平旋转角 yaw范围 0 到 360一个是垂直俯仰角 pitch负数看上方正数看下方。手动调角度的体验很痛苦好在现在的服务端基本都已经升级到支持facing的版本了。3.2 /tp 和 /teleport 是同一个东西/tp其实是/teleport的简写两者完全等价。所以在原版服务端里你输入/teleport 玩家名 100 64 100和/tp 玩家名 100 64 100效果一模一样不存在某个指令比另一个更好用的情况。但要注意很多服务器插件会提供自己的传送指令比如常见的玩家请求传送/tpa、同意传送/tpaccept这些并不是/tp的变体而是插件自己注册的新指令。把插件指令当成原版指令到处套用是很多萌新和半吊子管理员常犯的错误。判断方法很简单原版指令报未知命令时多半是你的写法或者版本问题插件指令报未知命令先确认服务端到底有没有装对应的插件。3.3 Java 版与基岩版的指令差异对照Java 版和基岩版的 TP 指令主体很接近但在细节上有差别尤其是在朝向参数的写法上。我用表格列一下主流写法功能需求Java 版1.13基岩版传送自己到坐标/tp 100 64 100/tp 100 64 100传送指定玩家到坐标/tp 玩家名 100 64 100/tp 玩家名 100 64 100传送玩家 A 到玩家 B 身边/tp A B/tp A B传送后设定朝向/tp 玩家名 x y z facing x2 y2 z2/tp 玩家名 x y z 水平旋转 垂直旋转基岩版的朝向参数是直接在坐标后面写两个旋转角顺序和 Java 版旧版的习惯很像。如果你在基岩版里尝试写facing某些新版本已经支持某些老版本不支持最稳妥的方法是查一下当前基岩版的更新日志。跨平台联机的时候比如玩家用 Java 版连接基岩版服务器或者反过来最好以服务器所在的平台为准。很多服务器会在进服公告里写清楚语法版本没写就问管理员别自己闷头试。3.4 命令方块里的传送装置写法命令方块在执行指令时有一点很反直觉不需要写斜杠/。聊天框里输入靠斜杠命令方块里直接写指令主体。比如聊天框写/tp p 100 64 100命令方块里就写tp p 100 64 100。这一点容易让新手栽跟头在命令方块里也习惯性带斜杠结果放下去红石一触发控制台刷一排未知指令。正确做法是先检查命令方块的内容开头有没有多余斜杠。命令方块做传送阵是冒险地图和服务器功能里的常客。比如两个点位之间做传送放一个脉冲型命令方块内容写tp p 目的地坐标再接一块压力板或者按钮。玩家踩上去就触发落地就在目的地。命令方块本身需要权限才能放置和编辑在原版服务器里一般只有管理员能碰或者借助服务端的权限组系统把命令方块权限授给特定玩家。4. 服务器场景下的权限规划与传送插件生态4.1 单人模式怎么开作弊单人世界默认不开作弊直接输入/tp会提示没有权限。两种方式解决创建世界时在允许作弊选项里选开。已经进世界了按 ESC 打开暂停菜单选对局域网开放把允许作弊打开再点击创建一个局域网世界。开了作弊之后你才能用命令但要注意这个模式让玩家能执行的指令范围非常广单机存档无所谓但如果你开着局域网让别人进来对方同时也能获得全部指令权限相当于把存档彻底敞开了。只适合熟人朋友玩不适合公开联机。4.2 原版服务端的 OP 权限在原版服务端里能用/tp不代表所有玩家能用前提是你有相应的用户权限。服务端控制台里执行op 玩家名就能把你指定的人提升为 OP。OP 权限是服务端的最高权限远不止传送。能改游戏模式、能封禁玩家、能执行所有服务端命令所以 OP 名单一定要吝啬。给不信任的玩家 OP等于把服务器的钥匙送出去等他把家拆了再后悔就晚了。权限节点这种细粒度概念原版服务端只提供最简单的 OP 和非 OP 两档。想实现某个玩家能传送但不能封人这种精细化权限得靠第三方服务端和权限插件来实现。4.3 普通玩家也能传送请求式传送机制管理员的/tp是强制传送玩家没有拒绝的余地。但在正常的服务器里玩家之间也需要传送比如组队跑图、找朋友一起玩不可能人人都当 OP。于是就有了请求式传送机制。常见的体验是A 玩家输入指令向 B 玩家发起传送请求B 收到后选择同意A 才会被拉过去。拒绝指令也必须有不然 B 被骚扰了毫无还手之力。另外更人性化的设定还包括传送成功后可以用一条 /back 类指令回到传送前的位置避免探索了半天的地形白跑随机传送功能则让玩家在熟悉地图之前可以随机找个地方落脚。这一整套机制并不是原版自带的功能而是服务端插件提供的。管理员的职责不仅是装好插件还要把指令权限和冷却时间调好不然全服玩家刷屏请求传送照样乱套。4.4 选择器的边界实体传送的安全红线服务器里用e传送实体的时候一个最常见的坑是不加类型过滤把掉落物、箭、矿车全送走了。掉落物数量多的时候服务器要同步处理一大堆实体移动轻则卡顿重则服务端崩溃。正确写法是给选择器加过滤条件比如只传送指定实体类型/tp e[typeminecraft:zombie] 100 64 100要是想传送所有玩家就明确写a。想传送所有生物但排除玩家可以写e[type!minecraft:player]。命令还有条件参数比如限制距离、限定数量上限表达能力比大多数人想象中强得多。能把选择器写得又准又稳是区分会用指令和会做服务器功能的分水岭。5. 三个实际场景的指令方案5.1 把卡在角落里的玩家拉出来日常维护里最常用的一条玩家掉进一个深坑、被卡进方块缝隙、或者困在建筑角落又说不清坐标。管理员在聊天框执行/tp 玩家名 ~ ~5 ~这个指令的意思是把玩家原地抬高五格。因为相对坐标的基准是执行者也就是管理员本人所以执行时最好站在附近确保高度差在合理范围内。抬高五格通常能直接把人送到地面上方问题一下就解决了。如果原地抬升无效比如玩家被卡在封闭基岩里那就只能查坐标强制拉回主城点。先让玩家按 F3 报坐标再执行 /tp 玩家名 主城x 主城y 主城z。这里有个我踩过的坑管理员在聊天框执行指令时p指的是离管理员最近的玩家不是被困玩家所以必须写具体玩家名别偷懒用p。5.2 用命令方块搭一对双向传送门假设你想在坐标 A100 64 200和坐标 B500 64 500之间做双向传送先在 A 点墙里藏一个脉冲型命令方块内容写tp p 500 64 500再在 B 点对称地放一个命令方块内容写tp p 100 64 200每个命令方块前面放一块压力板踩上去就触发一次传送。这样 A 到 B、B 到 A 就都打通了。关键细节有几个命令方块里不要写/y 高度要选在地面之上比如地表是 64那就写 66避免玩家传过去后卡在方块里命令方块要放在玩家走不到或被围起来的位置否则传送阵一触发命令方块本身就成了玩家的落点人还没站稳又被弹走。另外建议用红石延时或者冷却装置防止玩家在压力板上连续触发导致反复横跳。5.3 给新玩家一个靠谱的出生点很多服务器的出生点体验是玩家一进服站在一片未加载的区块里走了几步就掉进虚空或者出生在陡峭的山顶往下走直接摔死。要解决这个问题可以用一个简单方案。先把服务器的主城坐标确定下来比如主城中心是0 80 0。然后在主城的地面上放一块压力板连接命令方块内容写tp p 0 80 0玩家一踩压力板就回到主城中心。更好的做法是配合服务端的玩家首次进入事件或者插件让新玩家自动传送到固定位置而不是依赖他们自己去踩压力板。做这个功能的时候要格外注意不要把出生点设在空气中新玩家上线就掉进虚空情绪瞬间归零。顺带一提原版有一条setworldspawn指令可以设置全局出生点但它的影响范围是整个世界新玩家可能出生在附近几百格的随机位置不够精确。想要精确到脚底下的方块还是得靠上面的命令方块方案或者插件配合。6. 传送指令翻车记录常见问题排查速查6.1 提示未知指令或者没有权限报错信息不一样原因也不一样。如果是未知指令先看语法聊天框里有没有写斜杠命令方块里是不是写了斜杠玩家名和坐标的顺序有没有搞反版本支不支持当前写法。如果是没有权限那就不是语法问题了是账号权限不足单人模式要开作弊服务器要确认自己是 OP。排查建议是先在聊天框里试一条最简单的/tp 100 80 100如果这条都报错问题大概率集中在权限层如果这条能用说明是具体指令的写法有问题再逐段拆开检查。6.2 传送到半空再摔死这种情况多半是因为 y 坐标设得太低或者传送到未加载的区块上方。区块没加载完时玩家虽然被传送过去了但因为落脚的方块数据还没生成人就直接穿过空气掉进虚空等区块加载好了也来不及了。解决办法是传送点尽量用绝对坐标并且保证 y 坐标在目标地表之上 1 到 3 格而不是刚好贴地。比如已知地面高度是 64传送目标写66会比写64安全得多因为系统落下两格不会摔伤但写64一旦遇上顶面有一格空气的情况就会产生未知的卡位风险。6.3 传送后卡在方块里窒息卡方块和掉虚空的成因类似本质都是落点不在安全可站立空间。传送坐标如果写在一块方块的内部系统会判定玩家被方块包住开始掉血窒息。避免卡方块有三个办法落点高于地表一两格用相对坐标抬高一段距离再取消偏移或者用facing之前先确认落点区域没有方块遮挡。做传送阵的时候尤其要注意所有传送到固定坐标的指令y 统一加个安全余量。6.4 a 的灾难全服玩家集体被送走用a做批量传送是最容易引发服务器事故的操作。比如你只想把当前地图里的玩家集中起来结果忘记加范围参数全服的玩家包括在矿洞里的、在副本里的、在挂机里的全被拉到一个点等回神已经被岩浆包围了。安全习惯是批量传送前先向全服发一条通知让玩家做好准备传送指令加上范围过滤比如a[distance..100]只传一百格内的玩家确认安全后再执行。万一真的失误了立刻用/back类指令或者服务端快照帮玩家还原位置。6.5 传送完朝向不对传送过去了人站的位置是对的但就是面朝的方向很怪甚至背对玩家想看的建筑。这个问题的根源就是没有指定facing参数。Java 版 1.13 以后直接加facing 目标坐标旧版本只能补 yaw 和 pitch 两个数字。真调不明白角度就宁可传送到一个开阔的高台上让玩家自己转视角也别传送到楼梯口之类需要精确朝向的位置。6.6 插件指令全部不生效服务器里/tp正常但玩家用的/tpa、插件提供的/spawn全部没反应这种问题基本可以断定是插件没有正确加载或者玩家所在的权限组缺少对应节点。先查服务端控制台日志看插件启动报错没有再查插件配置文件里的权限节点看玩家的权限组是否被授予最后检查是不是指令前缀被某个插件冲突覆盖了。这类问题不像语法错误那么明显需要一点服务器管理经验但排查路径基本固定日志、配置、权限一项项过。最后分享一点实操心得管理服务器的头几个月我被相对坐标坑过不止一次。我以为~10是从我自己脚下开始算结果把目标玩家送进了大海我以为p一定指的是需要帮助的那个人结果把自己传送走。后来养成了两个习惯一是凡是涉及批量传送或者给别人传送的指令先在测试环境或者人少的时候试一遍二是写复杂指令前在纸上把坐标、选择器、朝向三个要素分别列出来确认语义没问题再上正式服。这套习惯帮我避开了很多次事故也让我后来做命令方块传送阵的时候基本不出错。希望这份TP指令的全解析能让你少走几步弯路。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进