第三十五章 spreadplayers-随机传送
前文说到,一位Minecraft Java服务器的腐竹,为了实现将宝箱随机放在世界各处,使用了如下指令:
/summon minecraft:armor_stand ~~~{CustomName:“\“A\““}
/sbr /readbr /layers ~~ 32 10000 false @e[tybr /e=minecraft:armor_stand,name=A]
/execute as @e[tybr /e=minecraft:armor_stand,name=A] at @s run ......(后面省略)
其中,第二条指令/sbr /readbr /layers我们还没了解过。那么/sbr /readbr /layers有什么用呢?
随机传送实体(分散[sbr /read]玩家们[br /layers])
/sbr /readbr /layers
作用:将一名或多名实体分别传送到指定范围内随机一个地方
需要权限等级:Java-2,基岩-1
需要作弊:是
格式:
Java1.15.2以上
/sbr /readbr /layers <中心坐标:X><中心坐标:Z><最小间距:小数><范围边长½><考虑队伍:布尔值><实体:目标选择器>
/sbr /readbr /layers <中心坐标:X><中心坐标:Z><最小间距:小数><范围边长½> under <最大高度:Y><考虑队伍:布尔值><实体:目标选择器>
Java1.16以下
/sbr /readbr /layers <中心坐标:X><中心坐标:Z><最小间距:小数><范围边长½><考虑队伍:布尔值><实体:目标选择器>
基岩版
/sbr /readbr /layers <中心坐标:X><中心坐标:Z><最小间距:小数><范围边长½><实体:目标选择器>
随机传送的范围是一个默认在世界建筑高度限制的正方形(注意,不是正方体),确定这个范围大小时是填写这个范围边长的二分之一(比如边长是200,范围边长½就填100)。需要注意,“范围边长½”这个参数的值不能小于“最小间距”。如果填写了under,可以规定传送的最大高度。这个参数并不只是单纯的将这个正方形从世界建筑高度限制拉下来,而是还有个作用:
随机传送时,实体就不会被传到高空然后掉下来摔死,而是会直接来到Y轴最高的方块上(注意,这个方块的Y坐标不能大于最大高度参数的值)。
随机传送的实体可以有很多个,但每个实体在不考虑队伍的情况下都是单独传送。既然是单独传送,就有可能有两个或更多实体挨得很近。所以,最小间距也是个很重要的参数,它规定了随机传送时实体们的最小间距。比如随机传送参数的值为7,那么执行时就算有两个实体随机到了很近的地方,它们的距离也绝对不会小于七格。
举个例子,比如:
/sbr /readbr /layers 100 100 30 300 under 128 true @a[tag=hunger_games_Teams]
执行时会先确定范围:一个中心在(100,100)的正方形,边长为600格。随后将以队伍为单位,随机传送所有具有hunger_games_Teams标签的玩家类队员到该范围内,并且直接来到Y轴最高(但不能超过128格)的方块上面,且两个队伍间距最小为30格。
/sbr /readbr /layers并不只可以随机传送玩家,正如那位将宝箱随机放在世界各处的腐竹用/sbr /readbr /layers随机传送盔甲架一样,/sbr /readbr /layers还可以随机传送任何实体。
所以,/sbr /readbr /layers可以用在服务器具有大场地的任何玩法中,如资源区(随机传送玩家)和吃鸡玩法类型游戏(随机传送玩家、空投箱)。
历史
Java
1.6.1——加入了/sbr /readbr /layers
1.16——加入了“under”和“最大高度”参数
携带版
1.0.5——加入了/sbr /readbr /layers