首页 男生 游戏竞技 Minecraft指令手册

第三十二章 tickingarea-基岩版控制常加载区块

Minecraft指令手册 你好MC 2969 2024-07-09 15:29

  在“第二十八章——区块”中,我曾提到过Java版和基岩版分别有一条指令用于控制常加载区块。

  在基岩版中,这条指令是:/tickingarea,即一直执行游戏刻(ticking)的地区(area)。

  /tickingarea

  作用:增加、减少或查看常加载区块。

  需要权限等级:1

  需要作弊:是

  格式:

  /tickingarea add <起点方块坐标><终点方块坐标>[此区域名称:字符串]

  /tickingarea add circle <区域圆心坐标><区域半径:整数>[此区域名称:字符串]

  /tickingarea remove <地区位置:坐标>

  /tickingarea remove <地区名称:字符串>

  /tickingarea remove_all

  /tickingarea list [维度选项:all-dimensions]

  书接前文,那个我的世界网易版租贷服在建完回城雪球后,发现一个问题:有时候这雪球不灵。

  经过腐竹的仔细排查,发现是因为该命令方块链所在的区域虽然是在主城正下方,但因为基岩版并没有出生点区块,就导致有时候主城里玩家都跑光了,区块停止加载,回城雪球就不管用了。

  为此,这位腐竹使用了以下指令:

  /tickingarea add 303 100 92 343 20 52 home

  这条指令的作用是:

  将与(303,100,92)到(343,20,52)这块区域有重叠部分的所有区块列为常加载区域,并取名为home。

  其中,选取区域的模式和/fill是一样的,即选定区域的对角坐标。虽然这里选取时有使用Y轴,但由于区块并不考虑Y轴,其实没多大用处。

  游戏并不会将选取的区域直接列为常加载区域,而是会将与选取区域有重叠部分的所有区块(哪怕只有那么一块方块)列为常加载区域,不然游戏计算时就非常麻烦(因为精确到了每个方块)。

  也就是说,哪怕你只选取了一格方块,也会将该格方块所在的区块列为常加载区域。

  在使用这条指令过后的第三天下午,服务器的MSPT突然从原本的39ms/t~57ms/t暴增到了265ms/t~527ms/t,最高值甚至达到了3761ms/t。虽然网易租贷服看不到那么直接的数据,但直观上的游戏卡顿已经快到玩不下去的地步了。腐竹接到管理员的消息过后,立马进服排查问题(因为存档上一次备份还在一个月前)。在忍受了数小时的超高延迟后,终于找到了问题:

  主城范围冒险并没有覆盖到主城的地下,但这儿仍然是常加载区域。一位资深熊孩子在一个月前尝试炸服无果后,仔细钻研最终发现了这个漏洞。于是在主城的地下搞出了大量已经命名的生物(非法获取到刷怪蛋,命名后放入发射器,配备专门研制的高频红石)。这些被命名的生物无法消失,又因为处于常加载区块,造成了服务器卡顿。

  腐竹为了解决这个问题,使用了如下指令:

  /kill @e[tybr /e=!br /layer,r=50]

  /kill @e[tybr /e=item,r=50]

  (此时服务器在经历一阵达好几万MSPT的卡顿后,终于顺畅了许多,然后腐竹就拆掉装置了,并将需要常加载区域的东西全部转移到了一个很远很远的地方)

  /tickingarea remove home

  \\移除名为home的常加载区域\\

  /tickingarea add circle 3000000 21 3000000 2 command

  \\将与以(3000000,21,3000000)为圆心的半径2区块(32格)的圆有重叠部分的所有区块列为常加载区域,并取名为command\\

  其中,移除常加载区域时,如果当时这位腐竹并没有设定该常加载区域的名称,那么它只能这样做:

  /tickingarea remove 323 65 72

  这条指令会删除所有包含该坐标点的常加载区域。

  如果这位腐竹忘记了该常加载区域的名称,或者是忘记了它的位置,那该怎么办?

  它有两种选择,第一种是:

  /tickingarea remove_all

  \\删除所有常加载区域\\

  第二种是:

  /tickingarea list

  \\列出当前纬度所有常加载区域\\

  第二种方法中,list返回的信息是这样的:

  当前维度中的所有常加载区域的列表

  -区域名:X YZ到X Y Z

  -区域名(圆形):X Y Z 半径:1~4区块

  0~10/10常加载区域正在使用

  别看就短短这几行,信息量还是很大的。

  首先,方形区域会直接显示区域的对角坐标。这个对角坐标并不是添加时填写的对角坐标,而是经过重叠部分转化成的实际加载区域的对角坐标。圆形区域会显示该区域转化过后的中心点和设定的半径。最后会显示目前有多少常加载区域和常加载区域上限。

  常加载区域数量还有上限?没错。一个存档最多添加10个常加载区域,每个常加载区域的区块数不能大于100。

  圆形区域是什么?这就要看这个腐竹用的最后一条指令:

  /tickingarea add circle 3000000 21 3000000 2 command

  这条指令的意思上面已经讲过,这儿就不复制过来了。

  圆形区域顾名思义,就是圆状的常加载区域。它有两个重要参数:圆心和半径

  圆心坐标和方形区域填写的两个坐标一样,实际上Y坐标没多大用。而半径,它的单位不是格而是区块。

  半径必须是1、2、3、4这四个整数,即16格、32格、48格和64格。

  确定了圆的范围后,游戏就会进行和方形区域一样的操作:将与该圆重叠的所有区块列为常加载区域。

  这就是圆形区域。

  现在,/tickingarea这条指令差不多就讲完了,但还没有完全讲完,因为还有一个参数没讲:

  list的维度选项。

  维度选项参数只支持一个值:all-dimensions,即所有维度。使用了:

  /tickingarea list all-dimensions

  将不只是列出基准点所处维度的所有常加载区块,而是列出所有维度的所有常加载区块。

  历史

  基岩版

  1.2.0——加入了常加载区域和配套的/tickingarea。

目录
设置
手机
书架
书页
评论