大家好,我是星河

今天教大家计分板的命令

stats指令是是记分板中的一环,可以根据其他命令的执行结果来更新记分板目标。具体来说,就是根据其他命令方块或者在玩家本身执行命令的结果,来改变相应记分板的分数。

下面给出基本格式:

  1. stats block <x> <y> <z> set <统计> <选择器> <目标>

  1. stats entity <选择器2> set <统计> <选择器> <目标>

此指令主要用于将统计命令执行结果的来源(实体或者命令方块)与一个记分板“绑定”。如果命令执行的来源为方块,则用第一条block模式:如果命令执行的目标为来源,则用第二条entity模式。

x,y,z为命令统计数据的来源方块所处位置,目标为要将统计结果记录为分数的记分板名称,而<统计>有五种,必须是以下其中之一。

AffectedBlocks — 返回受命令影响的方块的数量.

AffectedEntities — 返回受命令影响的实体的数量。

AffectedItems —返回受命令影响的物品的数量。

QueryResult — 返回命令的查询结果。

SuccessCount — 返回一个命令成功执行的次数

关于五种统计的详细说明,不做过多文字讲解。

那么侧边是怎么做到显示剩余人数的呢,下面给出用stats指令的解决方案:

首先给所有的玩家一个药效:

  1. /effect @a minecraft:saturation 40 0 true

此条命令放入循环命令方块执行,那么此命令给所有玩家药效,就相当于影响了所有的玩家,故选用AffectedEntities统计方式,来统计此命令影响的实体(玩家)数量,即使游戏中的人数。

创建记分板:

  1. /scoreboard objectives add tj dummy 统计

另外为了最后的显示美观,创建显示专用记分板:

  1. /scoreboard objectives add xs dummy 显示

召唤一个名rs的盔甲架用来存分数:

  1. /summon Armor_Stand ~ ~ ~ {CustomName:"rs",CustomNameVisible:1b,NoGravity:0,Invisible:1}

手动将rs在tj上的分数设定0来“激活”

  1. /scoreboard players set @e[type=armor_stand,name=rs] tj 0

将effect命令执行结果绑定到tj记分板上,且将分数存到盔甲架上:

  1. /stats block x y z set AffectedEntities @e[type=armor_stand,name=rs] tj

x y z 为执行effect指令的命令方块坐标。

最后将盔甲架在tj记分板上的分数同步到xs记分板上,避免显示uuid影响美观

  1. /scoreboard players operation 人数 xs = @e[type=armor_stand,name=rs] tj

在侧边栏显示xs记分板:

  1. /scoreboard objectives setdisplay sidebar xs

这样一来,一个侧边栏显示实时人数就做好了 O(∩_∩)O

二:用stats来统计某区域内某种方块的数量

统计方块数量用处并不多,方法上这种比较简单

仍然先创建tj和xs两个记分板,见第一条举例。

既然要统计方块的数量,那么<统计>一定是选择命令影响的方块数量AffectedBlocks。在Minecraft中能够影响指定种类方块的指令非fill莫属。

首先选定要统计的区域

我的世界计分板最全教程(我的世界教你计分板的高级应用)(1)

(为了看起来方便我用石头圈起来了)

假定我要统计钻石块的数量,接下来用fill指令把这个区域内的钻石块全部替换掉

  1. /fill ~ ~ ~ ~10 ~6 ~10 air 0 replace diamond_block

则执行此指令之后,fill掉的钻石块数量即为此命令影响的方块数量

仍然召唤一个盔甲架用来存分数:

  1. /summon Armor_Stand ~ ~ ~ {CustomName:"fks",CustomNameVisible:1b,NoGravity:0,Invisible:1}

手动将fks在tj上的分数设定为0来“激活”

  1. /scoreboard players set @e[name=fks,type=armor_stand] tj 0

将fill命令执行的结果绑定到tj计分板上,并存到名为fkl的盔甲架上

  1. /stats block x y z set AffectedBlocks @e[name=fks,type=armor_stand] tj

xyz为fill命令方块所在的坐标

将fks在tj上的分数同步到xs记分板上,循环执行

  1. /scoreboard players operation 方块数 xs = @e[type=armor_stand,name=fks] tj

这样就大功告成了,让我们放几个钻石块试一下:

我的世界计分板最全教程(我的世界教你计分板的高级应用)(2)

之后激活fill的命令方块

我的世界计分板最全教程(我的世界教你计分板的高级应用)(3)

可以看到侧边栏方块数变为了5

,