首先说两句废话,spreadplayers指令大家可能没有听说过,是因为这条指令设计的领域脱离了Mc指令研究主流——区域随机。但是这条指令一旦要使用,用处非常大,所以大家必须好好学习这条指令,同时也能解决大家一些对于这条指令的疑问。
索引:
1Page - SpreadPlayers用途、指令格式
2Page - SpreadPlayers疑难解答
3Page - SpreadPlayers输出特点
4Page - SpreadPlayers成品
SpreadPlayers用途、指令格式
这条指令用于对玩家(1.8之后对于所有实体)在指定的区域内传送并将实体打散(Spread-传播、蔓延)。通过这个特点,可以做出许多形形色色的装置,最常用的领域就是在PVP游戏中为了防止玩家在起点不进行斗殴,可以用这条指令进行随机传送。
与Tp不同,不是将玩家传送到某一个特定的点,而是将玩家传送到特定的区域内随机的点。
例如:

原本的盔甲架▲

在tp中选择红色羊毛左下角白色羊毛点后的盔甲架▲
在spreadplayers中选择原坐标、白色羊毛范围(红色羊毛)之后的盔甲架△
有上面的例子我们可以直接区分tp与spreadplayers差别——点与范围,固定与随机。
那么Spreadplayers究竟如何使用?

- /spreadplayers <x> <z> <spreadDistance><maxRange><respeceTeams true;false> <player ..>
- /spreadplayers <x坐标> <z坐标> <扩散最小距离> <扩散最大距离> <是否启用队伍 true或者false> <玩家 ..>
其中,xz为需要扩散玩家的中心点,最小距离与最大距离形成一片平面区域,并扩散玩家。
[第二页:疑难解答]
SpreadPlayers疑难解答
xz两坐标:
首先来解答关于为何只有xz两坐标而不是xyz三坐标。
从前文中有一个细节——平面区域,所以xz选择的只能是一个平面区域,那为什么没加入y围成一个立体区域进行扩散?没有y会不会卡进其他方块?
看一下图解:

一个最大距离为4,最小距离为0的平面,周围突起▲

中心放置盔甲架▲

第一次扩散,仿佛被卡在了凹陷处▲

但是第二次扩散证明了扩散(Spreadplayers)不受y坐标限制△
既然不会卡进方块,会不会掉落?

最大距离2,最小距离0的区域▲
红色羊毛与白色羊毛起落相差10+

传播后虽然传播到了下层,但是不会掉落。
所以通过验证,xz的值是自定的,而y默认为世界高度(256),则选择除了x,256,z的一个立体区域进行传播,因而省略y坐标。
(同时出现的传播特性在下页讲解)
队伍的true与false:
很容易理解,就是是否开启队伍模式。

例如我是红队,在这个区域传播

指令中开启队伍模式,只有红队可以传播

而其他的队伍就不会有任何事情发生。
若开启队伍:
- /spreadplayers x z 最小距离 最大距离 true @a[team=队伍颜色] 目标选择器 特殊NBT
若关闭队伍:
- /spreadplayers x z 最小距离 最大距离 true 目标选择器 特殊NBT
[第三页:输出特点]
SpreadPlayers输出特点
1.正方形区域
由于xz的立体区域定性,所以输出只会在最大距离和最小距离所形成的方形区域内。

一个最小距离0,最大距离4的区域,按照类似r=5的定性思维,输出会在红色区域内,

2.区域范围为256*平方差
尚文提到了所形成的是边相等的正方形,
而最小距离和最大距离所形成的准确来说则是平方差

传播在最小距离2,最大距离5区域中,

无论如何,都在范围平方差(5?-3?=16)的区域内传播,所以输出的范围值为平方差
3.传播至方块表层
spreadplayers类似小黑瞬移一样,不会卡进方块(上文已提到),不会坠入底部,只会传送到方块表层。

最大距离5,最小距离0的红色区域内,中空,传播会不会是实体掉落虚空?

不会,传播自动选择方块表层




↑不会出现这种情况


[/quote]
[第四页:成品]
SpreadPlayers成品
1.平方差随机器:(为drognoz灵感)

- /summon 生物名 红色羊毛坐标 ~ ~ ~ {Attributes:[{Name:generic.movementSpeed,Base:0.0}]}
然后执行
- /spreadplayers x z a b false @e[type=生物名]
(2b)?-(2a)?
=(2b+2a)(2b-2a)
概率随机器:
小概率:

- /summon 生物名 下层中心点坐标 ~ ~ ~ {Attributes:[{Name:generic.movementSpeed,Base:0.0}]}
- /spreadplayers 下层中心点坐标 0 a false @e[type=生物名]
n?/m?
大概率:

3.世界随机传送
首先我们要认识到tp可以tp到世界边境(tp坐标无限),由此所以spreadplayers也不受长度制约(受玩家数量制约)
所以世界传送大法在服务器里是/r或者/tp r
原版中是:
- /spreadplayers 0 0 0 世界范围半径 false @p
当然,spreadplayers也用于玩家互动类游戏(PVP、运动类)等,
总之,spreadplayers是一条强大的随机指令
[groupid=546]Command Block Logic[/groupid]