/summon 配合 NBT:装备、属性,以及让生物听话的那些标签
召唤一个生物只要一个词。让它保住装备、不消失、不燃烧、不乱跑,则需要六个特定的标签,例如 PersistenceRequired 和 NoAI。下面说说每一个的作用,以及 1.21.5 起的 equipment 写法、掉落几率和属性设置。
/summon zombie 是能用的。但一只僵尸要想保住盔甲、原地站定、在白天存活、永不消失,还需要六个标签,而这些从命令帮助里根本查不到。
关键的六个
/summon zombie ~ ~ ~ {PersistenceRequired:1b,NoAI:1b,Silent:1b,Invulnerable:1b,
CustomName:"Guard",CustomNameVisible:1b}
| 标签 | 效果 |
|---|---|
PersistenceRequired:1b | 永不消失。 做地图时最重要的一个 |
NoAI:1b | 冻结——不移动、不攻击、不受重力 |
NoGravity:1b | 漂浮,但保留 AI |
Silent:1b | 不发出生物音效 |
Invulnerable:1b | 免疫一切,除了 /kill、虚空和创造模式玩家 |
Glowing:1b | 隔墙显示轮廓 |
PersistenceRequired 和命名有关,但并不等同:命名牌同样能防止消失,但通过 NBT 设置的 CustomName 不能,除非你再加上 PersistenceRequired。做商店 NPC 的人几乎都栽在这里。
不会掉落的装备
{equipment:{mainhand:{id:"minecraft:diamond_sword",count:1},
head:{id:"minecraft:diamond_helmet",count:1}},
drop_chances:{mainhand:0f,head:0f}}
装备是一个以槽位名称为键的映射——mainhand、offhand、head、chest、legs、feet、body、saddle——所以不存在槽位顺序搞错的问题,也不需要空占位符:只列出你填了东西的槽位即可。旧教程用的是 HandItems 和 ArmorItems 数组(按脚、腿、胸、头的顺序),1.21.5 已将其替换;它们现在不再起任何作用。
掉落概率是 drop_chances 中每个槽位的浮点数,从 0f 到 1f。任何高于 1f 的值都能保证掉落,并且让物品的附魔和耐久完好保留。
属性
{attributes:[{id:"minecraft:max_health",base:40},
{id:"minecraft:movement_speed",base:0.35}]}
在同一份 NBT 里设置 max_health,生物生成时就会带着那个满血量——Health 默认等于新的最大值。只有想让它生成时就带伤,才需要加 Health:…f。
常见 id:max_health、movement_speed、attack_damage、armor、knockback_resistance、follow_range、scale。
乘客向下堆叠
{Passengers:[{id:"minecraft:skeleton",Passengers:[{id:"minecraft:chicken"}]}]}
最外层的实体在最下面。把 Passengers 嵌在 Passengers 里面,就能向上搭起塔来。每个骑乘者若想单独配置,都需要自己完整的 NBT。
Bedrock 版不一样
Bedrock 版的 /summon 没有 NBT 参数。语法是 /summon <entity> <pos> <yRot> <xRot> <spawnEvent> <name>,行为通过生成事件(spawn events)而非标签来设置。把 Java 版的 NBT 数据块粘到 Bedrock 版里是跑不起来的。
在 /summon 生成器 里挑一个生物,用可视化的方式切换这些标签——盔甲槽位顺序已经替你处理好了。