本帖最后由 End-Enderman 于 2015-8-2 22:55 编辑

最近出了1.9的快照版本,其中这个版本将末影龙也强化了不少。在实践过程中,看到末影龙能不断吐出龙息。既然有一种新行为,那么这个生物是不是就应该有一个新的nbt来控制它的新行为?果不其然,用entitydata探测末影龙时,末影龙多了一个明显的nbt-DragonPhase。具体使用方法为:
  1. summon EnderDragon ~ ~1 ~ {DragonPhase:xxx}
复制代码
这个nbt用于控制末影龙行为的阶段。所谓阶段,末影龙每做出一个行为都是一种阶段。使用时直接填写DragonPhase:xxx即可。xxx填写数字,也就是阶段。以下为本人实验的数据(可能不太准)
DragonPhase:1末影龙在高空中飞翔(若是高频的话,你再也看不到末影龙下来吐龙息的情景了...)
DragonPhase:2末影龙往基岩台的附近向下俯冲(若是高频的话,末影龙便会不断的俯冲)
DragonPhase:3末影龙在基岩台上休息(若高频的话,末影龙会一直做出休息时的动作。这时算是吐龙息的准备工作)
DragonPhase:4末影龙在低空巡视(不至于波及玩家的高度),最后来一次俯冲。
DragonPhase:7末影龙吐龙息。(若高频吐龙息会有间歇性)
PS:DragonPhase:5以及DragonPhase:6我并没有实验明白。因为高频DragonPhase:5和DragonPhase:6末影龙可能做的动作不是一样的。待研究。
若用NoAI:1配合DragonPhase:7的话,那么末影龙不会吐出龙息,但是脖子会往下倾,做出要吐龙息的动作。

之后我做了一个"关于末影龙新nbt-DragonPhase的小游戏"(点击进入。不过或许谈不上算是游戏...)。让我们来分析一下电路。
末影龙生成:
  1. summon EnderDragon ~ ~1 ~ {NoAI:1,Silent:1,CustomName:a-j}
复制代码
分别生成几只末影龙,名字分别为a到j之间的字母。NoAI:1防止末影龙乱动,Slient:1防止末影龙吵闹(声音太烦)。
按按钮末影龙喷出毒气:
在检查这个小装置的电路时,能发现按钮后面并没有连接任何的命令方块。所以一看就能知道按钮是用脉冲激活testforblock来控制。当按完按钮后,testforblock探测到了按钮按下去的状态,比较器输出,从而激活后面的指令。
  1. testforblock x y z wooden_button 11
复制代码
让龙喷出毒气当然是上面讲述的DragonPhase,用entitydata就可以控制。
  1. entitydata @e[type=EnderDragon,name=a-j] {DragonPhase:7,NoAI:0}
复制代码
分别改变名字为a到j之间字母的末影龙的nbt。将它们NoAI:1效果解除,并将DragonPhase:0改为DragonPhase:7,让龙喷出毒气(PS:如果不解除NoAI:1的话,那么龙依然会静止不动)。这之间一定要掌握好时间,如果不是高频的话,龙的DragonPhase:7的nbt是有一定的时间限制的,过一会龙喷完毒气就会飞走。所以一定要掌握好,和中继器配合上。同理,到一定时间之后,再将NoAI用entitydata改回来,末影龙便会恢复原样。其余的就是用testforblock探测按钮后面跟setblock铁门这种较为简单的操作,具体可以研究下电路。
联动nbt:http://www.mcbbs.net/thread-441625-1-1.html
出自索引:http://www.mcbbs.net/thread-440268-1-1.html