想让玩家只拥有传送权限,最优解是用LuckPerms权限插件单独分配minecraft.command.tp节点,而不是直接给他OP权限。直接给OP会连带开放封禁、给予物品、修改游戏规则等高风险指令,相当于把服务器后门钥匙交出去,下面从方案对比、权限节点写法、LuckPerms实操、常见坑位四个维度拆解,一步步带你把传送权限精准“抠”出来。
方案对比:原生OP等级与权限插件的取舍
很多服主图省事,直接在控制台输入op 玩家ID,但这会立刻触发两个隐患:玩家能执行所有命令,包括/ban、/stop、/give,而且TNT、屏障方块都可能被恶意使用,原版指令体系里不存在“只给tp权限”这个选项,OP等级只有0-4五档,最低的1级只是绕过出生点保护,依然无法放行/tp,这就像你想给租客一把客厅钥匙,却把整串万能钥匙递了过去。
行业共识认为,任何人想要精细控制权限,必须依赖插件层解决,目前主流方案有三个:LuckPerms、GroupManager、PermissionsEx,其中LuckPerms是2026年社区维护最活跃、节点细粒度最高的选择,支持命令补全、临时权限、多后端存储,而且配置命令统一前缀/lp,学习成本低。
| 方案 | 是否支持单指令放行 | 是否支持权限组继承 | 配置复杂度 | 服务器版本兼容性 |
|---|---|---|---|---|
| 原生OP等级 | 不支持 | 不支持 | 零配置 | 全版本 |
| LuckPerms | 支持 | 支持 | 中等 | 8-1.20+ |
| GroupManager | 支持 | 支持 | 低 | 8-1.16常用 |
| PermissionsEx | 支持 | 支持 | 中 | 旧版本兼容好 |
如果你用的是Mohist、Arclight这类混合端,或者模组服,还需要注意权限节点可能从minecraft.前缀变成bukkit.或模组专属节点,这时候LuckPerms的在线权限树功能能帮你快速检索。
只给玩家tp权限的核心命令与配置写法
移除危险OP身份
在你给玩家分配任何权限之前,先执行deop 玩家ID,彻底摘掉他的管理员帽子,这一步顺序不要反过来,否则玩家在OP状态下可能已经复制了服务器种子或财产数据。
权限节点到底怎么填
纯原版指令/tp在Bukkit系服务端里对应节点是minecraft.command.tp,如果你希望玩家自己传送到别人身边,只需要放行这个节点;如果希望玩家使用/tpa(传送请求)与/tpaccept(接受传送),那是另一组节点:
minecraft.command.tp:允许执行随机传送或指定坐标传送minecraft.command.tpaccept:允许接受他人的传送请求minecraft.command.tpa:并非原版节点,属于EssentialsX插件开放的功能
很多服主分不清/tp和/tpa,顺带把EssentialsX的essentials.tp也给了,这其实放开了跨世界传送和反射传送,容易被人用来卡区块加载,建议直接按需分配,非必要不给essentials.tp。
快速给单个玩家放行
打开游戏内聊天框或控制台,输入:
/lp user 玩家ID permission set minecraft.command.tp true
然后把玩家加入你已建好的默认权限组,方便其他同类玩家共用:
/lp group default permission set minecraft.command.tp true
这里有个细节:如果服务器装了CMI或EssentialsX,它们通常会用cmi.tp或essentials.tp替代原版节点,此时你需要同时放行两个节点,否则玩家仍会收到“你没有权限执行此命令”的提示。
用权限组管理权限:我的世界服务器权限组怎么分配给玩家
为什么要建组而不是逐个给玩家授权
当你有十几个玩家需要tp权限时,逐个执行/lp user命令会变得很啰嗦,更好的方式是把tp权限挂在default组上,或者新建一个
teleporter组,再把玩家加进去,这样日后想收回权限,只需从组里移除玩家,不需要挨个撤销节点。
第一步,创建权限组并设置显示名:
/lp creategroup teleporter
/lp group teleporter parent add default
第二步,给teleporter组添加tp相关节点:
/lp group teleporter permission set minecraft.command.tp true
/lp group teleporter permission set minecraft.command.tpaccept true
第三步,把目标玩家加入该组:
/lp user 玩家ID parent add teleporter
执行完成后,输入/lp user 玩家ID info检查权限继承树,确认没有误加到op组,如果你希望玩家一进服就自动获得tp权限,直接把节点挂到default组即可,这对小服务器来说是最省心的。
多世界传送的特殊场景:如何给玩家tp跨世界权限
Spigot搭配Multiverse-Core时,/tp跨世界权会受到插件限制,比如玩家从主世界传到地狱门,需要multiverse.teleport.self节点,这种场景下,光放行minecraft.command.tp还不够,你需要在LuckPerms里追加:
/lp group teleporter permission set multiverse.teleport.self true
若服务器使用CMI,跨世界传送还牵涉cmi.tp.self和cmi.tp.other两个分支,cmi.tp只是基本通行证,给完权限后,建议用/lp verbose开启调试模式,让玩家实际操作一次,日志里会清晰显示缺失的节点名称。
权限放行后还要堵住的三个安全漏洞
第一,传送点保护漏洞。 只给/tp权利,不代表玩家不能把自己传送到未加载区块或基岩顶部,如果服务器没有领地插件,玩家可以/tp 坐标到地图边界外,利用未生成地形卡服,建议配合WorldGuard设置传送冷却和禁止传送区域。
第二,OP等级残留漏洞。 检查服务器根目录的ops.json,确保目标玩家不在列表中,有些面板服重启后会重新同步OP名单,你需要到面板的“权限管理”页手动移除。
第三,插件权限覆盖漏洞。 CoreProtect或AuthMe这类基础插件会自带自己的传送记录和登录传送效果,如果它们请求了(拒绝所有)权限,反而会把minecraft.command.tp覆盖掉,给完权限后一定要实际测试一次,不要只看权限树。
常见问题快速排查:权限给了但玩家仍然无法tp怎么办
- 输入
/lp user 玩家ID permission check minecraft.command.tp,查看返回结果是否为true。 - 确认服务端类型是Paper还是Forge,模组服本身没有
/tp命令,需要配合命令前缀mod或使用FTB Essentials。 - 玩家是否在创造模式或观察者模式,这会影响部分传送插件对玩家状态的判定。
- 检查LuckPerms的优先级列表,如果其他组里有一个明确的
false节点,可能会覆盖掉true。
怎么快速撤回已发放的tp权限
如果你发现某位玩家滥用传送,执行/lp user 玩家ID permission unset minecraft.command.tp即可单独移除,不需要重置整个组权限,如果他想从teleporter组里彻底退出,用/lp user 玩家ID parent remove teleporter,撤回后建议在控制台执行/lp sync刷新缓存,避免权限数据滞后。
我的世界服务器怎么做op才算不踩雷
与其问我“怎么只给tp权限”,不如换个思路:服务器任何管理操作都应该走权限组,而不是OP列表。 原版OP等级是二进制的,开了就有全部权限,关了就要回到控制台反复输入指令,而LuckPerms的权限节点天然支持继承、临时期限、上下文条件,哪怕玩家需要暂时获得tp权限,也能设置/lp user 玩家ID permission settemp minecraft.command.tp true 10m,十分钟后自动失效。
给玩家tp权限后,记得同步开启传送请求上限和冷却时间,避免高频传送压垮服务器TPS,你可以用/lp group teleporter meta addprefix "&7[传送] "标明玩家身份,方便其他成员一眼识别有传送能力的角色,合理放权,才能让服务器既活跃又安全。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/661803.html





