在我的世界服务器中,一个快捷方便的回城方法会非常方便玩家。那么抬头或者低头传送就是一个很棒的解决方法。
抬头低头目标选择器
检测抬头低头玩家是通过目标选择器rx、rxm实现的。
rx
用于检测实体的垂直旋转角度,用来指定角度的最大值。rxm
用来指定角度的最小值。如果搭配使用它们,就可以选择在夹角内的实体。正平方向为0度,抬头最大角度为-90度,低头最大角度是90度。
所以@a[rxm=89,rx=90]
可以检测低头的玩家。@a[rx=-89,rxm=-90]
可以检测抬头的玩家。
为了方便介绍,以后的传送均以抬头作为示例,大家可根据需要自行更改为低头。
最简单的抬头传送
我们可以直接使用tp指令来传送抬头的玩家。循环、无条件、保持开启。(x y z为传送的坐标)
tp @a[rx=-89,rxm=-90] x y z
要让指令一直运行,我们需要将该指令方块所在设置为常加载区块。我们可以站在该命令方块旁边输入以下指令:
/tickingarea add circle ~ ~ ~ 1 chuansong
但是这样的传送会影响玩家正常的抬头,所以我们可以对该方式进行优化。
连续两次抬头传送
将连续抬头两次的玩家进行传送,同时低头可以取消传送,这样就不会影响玩家正常生存。
原理介绍
两次抬头可以分布为第一次抬头,复原,再第二次抬头。我们只需要检测这三个状态就可以了。我们可以先给抬头的玩家一个标签1,再给予回到原位的标签1玩家标签2,最后将抬头的标签2玩家,传送到目标地点。
指令实践
给抬头的玩家添加标签huicheng1。循环、无条件、保存开启。
tag @a[rx=-89,rxm=-90] add huicheng1
给有huicheng标签复原的玩家添加标签huicheng2。循环、无条件、保存开启。
tag @a[rxm=-45,rx=45,tag=huicheng1] add huicheng2
将有huicheng2标签第二次抬头的玩家传送到目标地点。循环、无条件、保存开启。
tp @a[rx=-89,rxm=-90,tag=huicheng2] x y z
移除低头玩家的huicheng1、huicheng2标签,均为循环、无条件、保存开启。
tag @a[rxm=89,rx=90] remove huicheng1
tag @a[rxm=89,rx=90] remove huicheng2
我们还可以给第一次抬头的玩家做一个提示。循环、无条件、保存开启。
titleraw @a[tag=huicheng1] actionbar {"rawtext":[{"text":"再次抬头进行传送,低头取消。"}]}
让以上命令方块能一直有效,需要放在一个常加载区域内。
同时我们需要在传送点附近放置命令方块将玩家的标签清除掉。均为循环、无条件、保持开启。
tag @a[r=5] remove huicheng1
tag @a[r=5] remove huicheng2
至此,抬头低头传送就完成了。