第189章 ,/.

/entitydata @e[type=!player]{Health:0}

执行该指令,游戏将会给除玩家以外的其他实体添加一个{Health:0}的标签,如果添加的对象已经有了这个标签,将会覆盖这个标签(同时聊天框会出现一大串的信息——实体数据已更新:{XXXXXXXXX:XXXX}.....。这条信息可以用来查看某个实体的NBT标签,但当游戏规则sendCommandFeedback为false时并不会显示。)。比如你在执行指令前放了一个矿车,执行指令后矿车什么事情都不会发生,只不过NBT多了一个没用的{Health:0}而已。但如果你旁边有只羊,执行指令后这支羊将会死亡,因为它的Health被覆盖为0,因此游戏判定它死亡了。

这条指令的效果相当于/kill @e[type=!player]。但与/kill不同的是,只有该指令选中的生物才会死亡,其他被选中的实体则不会受到影响,因为只有生物才有Health值且会识别它。

这就说明了什么?/kill并不能精确选中生物并杀死,但/entitydata却可以。

是不是很简单?

但问题就来了。

使用刚才的指令后,这个矿车的NBT就变成了:

{Motion:[0.0d,-0.0d,0.0d],UUIDLeast:-L,Health:0,Invulnerable:0b,Air:300s,OnGround:0b,Dimension:0,PortalCooldown:0,Rotatlon:[0.0f,0.0f],FallDistance:0.0f,UUidMost:L,Pos:[-30.5d,4.0625d,-1131.5d],Fire:-1s}

可以发现Health标签被添加到了第一层,生物的Health标签也在第一层。但如果我们需要替换的标签在第二层甚至是第三四层,该怎么办?

假设这里有一个id是Genshin_Impact的实体,其NBT是:

{id:“Genshin_Impact“,UUIDMost:L,UUIDLeast:-L,Motion:[0.0d,-0.0d,0.0d],Pos:[72.25d,65.7265d,271.5d],Physcal_Power:20,Physcal_Power_Max:205,Sex:1,Health:,Health_Max:,Role_Id:“Barbatos“,Equipment:[{id:“Chicken_Mushroom_Skewer“,value:15}]}

现在,我们要把Equipment中的id标签的值从Chicken_Mushroom_Skewer改为Adeptus_Temptation,该怎么做?