本帖最后由 乙烯_中国 于 2015-8-1 13:38 编辑
本人通过无数次尝试,终于得出了ShulkerBullet眼花缭乱的NBT。
ShulkerBullet 就是 Shulker 射出来的类似追踪导弹的玩意儿。
在官方还没放快照的时候,就对这个东西的运动轨迹十分感兴趣,也很想知道其运动方式。
NBT标签
在经历无数entitydata @e[type=ShulkerBullet] {}后,
终于找到了
每个独有NBT的特性:
- {Steps:23,Motion:[0:0.13379264233465568d,1:-5.376542536792173E-4d,2:0.04663407279080639d],TXD:0.17830286305023177d,UUIDLeast:-7941149489731700122L,Invulnerable:0b,Air:0s,OnGround:0b,Dimension:0,PortalCooldown:0,Dir:5,Rotation:[0:117.04212f,1:0.29282433f],FallDistance:0.0f,Target:{X:10,Y:4,Z:10,L:1L,M:1L,Owner:{X:10,Y:1,Z:13,L:10L,M:10L,UUIDMost:7538791305186001617L,Pos:[0:-4.874753184279115d,1:18.57465950922877d,2:-9.759045183377285d],Fire:0s,TYD:0.0d,TZD:0.0d}
复制代码其中,除了Motion、UUIDLeast、UUIDMost、Fire、Pos、Air、Invulnerable、OnGround、Dimension、Rotation、FallDistance这些实体通用标签外,
可以注意到一些
独有的标签:
Steps:
TXD:
TYD:
TZD:
Dir:
Owner:
Target:
这些标签究竟是什么意思,经过本人尝试,得出以下结论:
Steps:(整型)
到达目的地总共需要多少步。可以理解为总共转折几次(因为Shulker的运动轨迹几乎都是旋转直角的)。值越大,转折次数越多,到达目的地行进的路程也就越远。如果为0,那么无Motion(悬空)。 |
TXD: TYD: TZD:(双精度浮点型)
分别向X轴,Y轴,Z轴的偏轴。规定了一个方向。如果Steps>0则不需要限定,自动得出;如果Steps=0,那么需要手动规定,接着ShulkerBullet就会像Fireball一样直线运动了(不受重力)。这个标签前提是Target被定义。 |
Dir:(整型)
Owner:(组)
是ShulkerBullet的所有者。包含了X: Y: Z: L: M:五个子标签。X: Y: Z:是所有者的坐标。L: M:是所有者的UUIDLeast和UUIDMost。这个所有者不需要定义,因为指令刷出的ShulkerBullet不需要所有者。 |
Target:(组)
是ShulkerBullet的目标。同样包含了X: Y: Z: L: M:五个子标签。X: Y: Z:是目标的坐标。L: M:是目标的UUIDLeast和UUIDMost。(注意这个目标是实体)这个标签运作的前提是Step>0。(最重要的标签,如果ShulkerBullet要按照轨道运动这个标签必须定义) |
需要注意不管是L M UUIDLeast UUIDMost,现在都属于long型,要添加l的后缀才有效。
运动
那么其实它的运动总的来说分为两种:
那么需要使Steps:0;TXD TYD TZD自己调整;Target必须填写正确的对应实体。
- /summon ShulkerBullet ~ ~5 ~ {Steps:0,TXD:1.0,TYD:-1.0,TZD:1.0,Target:{X:10,Y:10,Z:10,L:1l,M:1l}}
复制代码
- /summon ShulkerBullet ~ ~5 ~ {Steps:0,TXD:1.0,TYD:1.0,TZD:1.0,Target:{X:10,Y:10,Z:10,L:1l,M:1l}}
复制代码(可以得知这种运动方式会 一直直线运动,图中 TYD效果不同)
在生成ShulkerBullet之前,需要在10 10 10生成一个UUIDLeast为1,UUIDMost为1的实体:
- /summon VillagerGolem 10 10 10 {UUIDLeast:1l,UUIDMost:1l,NoAI:1}
复制代码 |
达到这需要让Steps>0,Target设定目标(目标的实体必须存在)
- /summon ShulkerBullet ~ ~5 ~ {Steps:1,Target:{X:10,Y:10,Z:10,L:1l,M:1l}}
复制代码Steps:1就代表运动 最短路径。如果按照NBT意思是转折一步。但是显然到达目的地不止一步。不过只要规定为1,那么实体 自己会计算转折的最短路径(直角)。
- /summon ShulkerBullet ~ ~5 ~ {Steps:100,Target:{X:10,Y:10,Z:10,L:1l,M:1l}}
复制代码Steps:100超出了范围,会有类似 Steps:0的效果。
- /summon ShulkerBullet ~ ~5 ~ {Steps:20,Target:{X:10,Y:10,Z:10,L:1l,M:1l}}
复制代码Steps:20就是转折20次,那么ShulkerBullet 会尽可能完成20次转折。
同样Target需要有存在的目标:
- /summon VillagerGolem 10 10 10 {UUIDLeast:1l,UUIDMost:1l,NoAI:1}
复制代码需要 10 10 10生成一个UUIDLeast为1,UUIDMost为1的实体。
|
[groupid=546]Command Block Logic[/groupid]