第145章生物的共通NBT-3
在上一章我们讲到了handitems和handdropchances,这两个标签都跟生物的两只手有关。而一个生物,它不光拥有手,还拥有一个可以穿戴东西的身体。
所以,nbt里除了handitems,还有armoritems——用于存储生物的头、胸、腿、脚都穿了些什么鬼东西。
armoritems的值和handitems一样,都是列表。列表内有4个空,分别用于填写四个部位所穿戴的物品:
{armoritems:[{靴子},{护腿},{胸甲},{头盔}]}
举个例子,现在这里有个僵尸,它头上戴着皮革帽子(leather_helmet),胸前穿着锁链胸甲(leather_chestplate),腿上是个附了保护i的的钻石护腿(diamond_ings),脚上穿着铁靴子(iron_boots),那么这个僵尸的armoritems就是:
{armoritems:[{count:1,id:“iron_boots“},{count:1,id:“diamond_ings“,tag:{enchantments:[{id:“protection“,lvl:1}]}},{count:1,id:“leather_chestplate“},{count:1,id:“leather_helmet“}]}
哦不!这个僵尸死了!那么它掉落身上装备的几率是多少呢?
我们不知道有多少,但我们可以更改成自己想的,这样子就知道了!
和handitems一样,armoritems标签也有一个控制掉落几率的亲兄弟:armordropchances,格式和handdropchances当然也差不多,都是:
{armordropchances:[靴子掉落几率,护腿掉落几率,胸甲掉落几率,头盔掉落几率]}
这里的几率也照样是单精度浮点数。举个例子:
{armordropchances:[1.0,0.32,0.65,0.99]}
这样子的话这个僵尸其装备的掉落几率就是:
靴子——100%
护腿——32%
胸甲——65%
头盔——99%
是不是灰常简单?
当然,别忘了,击杀一个生物,掉落的不光是它拿的东西以及穿的东西,还有这个生物的战利品表所规定掉落的物品。
控制生物战利品表的标签就是:deathloottable,这个的值是个字符串,所以它填的战利品表一般是游戏已经封装好的,比如这个僵尸,它的默认战利品表就是:
{deathloottable:“loot_tables/entities/zombie“}
也就是僵尸的战利品表。
当然,你也可以自定义战利品表,只不过你可能需要用到很多的转义符号()。
具体的战利品表介绍已经在第八十九章就详细的讲过了,只不过好像很多人都没看懂哎。
没事,没看懂很正常,6000多字的内容可不是一时半会能消化得完的。
战利品表是随机的,但这个随机并不是战利品表自身的,而是要通过种子来完成:
deathloottableseed
deathloottableseed的用途是生成战利品表的种子,当为0或为空时将会随机生成一个种子。
上面的deathloottableseed和deathloottable都是关于战利品表的。但如果一个生物没有战利品呢?
除了它的战利品表是loot_tables/empty外,还有一种可能:
它没有deathloottableseed和deathloottable这两个标签。
没错,实际上这两个标签是可选的,就算把它两删了也不会出什么惊天大事的。
但下面这个,就不能删了:
canpickuploot(值:true|fasle布尔值)
canpickuploot这个标签控制着这个生物它到底会不会捡起物品(或者说是战利品)。当为true,这个生物就会捡东西,然后把可以用的东西用起来,比如捡起靴子就穿上靴子之类的——这点在僵尸上特别突出:相信你应该经历过苦力怕把你箱子炸了,僵尸紧接着跑过来把你东西拿了,我都怀疑这苦力怕是不是和这僵尸心有灵犀,咋配合得这么默契呢?
所以,如果你不想让僵尸拿起你的剑去砍你,就把这个canpickuploot改成false吧!
生物的共通nbt还有许多和canpickuploot一样是布尔值的标签,且都很简单:
noai(值:true|fasle布尔值)——这个生物是否没有ai。true为没有ai,false为有ai。
persistencerequired(值:true|fasle布尔值)——这个生物是否不会被自然删除。true为不会被自然删除,false为会被自然删除。
lefthanded(值:true|fasle布尔值)——这个生物渲染的主手是否为左手。true为渲染时主手为左手,false为渲染时主手为右手。
leashed(值:true|fasle布尔值)——这个生物是否被拴住。true为被拴住,false为没有被拴住。
而其中,最复杂的应该要数leashed。当这个为true时,就会有一个新的标签:
leash
这个leash稍微有点复杂,它有两种记录方式:
1.该实体为拴绳的头(没错,就是栏杆上那个长方形状的拴绳头,那也是个实体)或拿着拴的实体,那么将会记录它拴住的实体的uuid(1.15版本及以下是uuidmost和uuidleast),即:
{leash:{uuid:[i;-211674134,1944866746,-1405592313,1790609596]}}
(1.15版本及以下:
{leash:{uuidmost:-909133480994254918,uuidleast:-6036973014053386052}})
2.该实体为被拴住的生物,那么将会记录拴住它的拴绳头或拿着拴着它的绳子的实体位置,即:
{leash:{x:921,y:65,z=343}}