仿JAVA版边界指令防止跑图及限制活动范围
2020/09/201449 浏览攻略交流
众所周知,玩家跑图一直是每个服务器常见的问题,这是每一个服主心头的痛。

不仅仅是服主,一些大范围活动面积地图的作者也为此感到很为难,既要有大的活动范围,又不想有人超出范围,搭墙工程又极大,而且玩家依旧是可以用方块搭出去 怎么办呢?
所需工程量极低!
只要三个命令方块!
只要三个命令方块!
只要三个命令方块!
(无function指令!)
指令我也会发在评论区方便复制
指令原理(懂行的看完这个就可以退出了)
在范围内将玩家的计分板设置为2
全图玩家的计分板分数减1
全图检测玩家计分板分数是否小于0
以此来检测以及选中出范围的玩家
执行相关指令(记得将命令方块列入常加载区域,指令(聊天框输入即可):/tickingarea add <x> <y> <z> <x> <y> <z> <常加载区域名>)
在此之前我们需要做的是创建一个名为border(名字自己喜欢就好)的计分板
指令(聊天框输入即可):
/scoreboard objectives add border dummy border
全图范围内将所有玩家名为border的计分板的分数减一(跨纬度生效)
指令(重复命令方块):
execute @a ~ ~ ~ scoreboard players remove @s border 1
(要是不想跨纬度生效就把目标选择器的区域限制一下范围需要调大那么亿点点,一定是要亿点点,不然跑出这个范围就不受影响了,改成@a[x=<矩形x坐标>,y=<矩形y坐标>,z=<矩形z坐标>,dx=<在该坐标以x轴为正方向延伸的长度>,dy=<在该坐标以y轴为正方向延伸的长度>,dz=<在该坐标以z轴为正方向延伸的长度>]
这里给出我服务器的指令(之前的,现在改成跨纬度生效了)

然后就是将可活动范围内的玩家名为border的计分板的分数设置为2(不跨纬度生效,需要每个维度都放一个命令方块(假如不限制目标选择器范围的话))
指令(重复命令方块):
execute @a[x=<矩形x坐标>,y=<矩形y坐标>,z=<矩形z坐标>,dx=<在该坐标以x轴为正方向延伸的长度>,dy=<在该坐标以y轴为正方向延伸的长度>,dz=<在该坐标以z轴为正方向延伸的长度>] ~ ~ ~ scoreboard players set @s border 2
依然是给出我服的指令

然后就是如何检测并执行指令了
检测全图是否有玩家名为border的计分板分数小于或等于0,是则让该玩家执行指令
指令(重复命令方块):
execute @a[scores={border=..0] ~ ~ ~ <需要执行的指令>
依然是给出我服的指令(之前的,现在已经换了)

这种是玩家可以超出范围的,但撑不了多久,要是不想玩家开创造出去可以再加个命令方块将范围外为创造模式的玩家改成生存模式(可以利用这个做小游戏等等)
至于玩家出不去范围的我将放在另外一篇帖子里