【Minecraft】结构方块无法储存实体的乘客的特性,及解决办法。
最近我在弄数据包时发现一个mc里结构方块有一个特性,当你保存了一个带有乘客的实体的结构,再加载出来,你会发生实体的乘客丢失了。查阅之后发现,很早以前就有人发现了这个特性,大概是mc的底层代码里结构方块不会保存实体的一些数据,因此生成出来就会丢失乘客。为了解决这个问题我上MCBBS上请教了一番。有一个解决办法是在结构里放置命令方块,用命令方块来加载实体。
具体操作是放两个命令方块,最好是叠起来,底下命令方块为脉冲型,保持开启,输入要生成的实体的指令。然后命令方块指向上面的命令方块,上面的命令方块为连锁型保持开启,指令为/fill ~ ~-1 ~ ~ ~ ~ air,把自己和底下的命令方块都替换成空气。这样当结构被结构方块加载出来之后,底下的命令方块就会自动执行,顺利执行以后其指向的连锁方块也跟着执行,就把两个命令方块消除掉了。于是最后只剩下实体。
但怎么做还有一个缺点是,不能在数据包中用。我又遇到了MC的另一个特性,如果你用数据包去在游戏中生成自定义结构,这些自定义结构的生成是用模板池实现的。因此结构生成的时候不会自动执行命令方块。于是我又想到了另一个方法,就是不用命令方块。
在结构里生成一个带有特殊标签的盔甲架,然后数据包里高频执行指令去检测这个盔甲架,检测到盔甲架以后让这个盔甲架执行生成实体在自己位置的指令,然后盔甲架再执行指令杀死自己。这样就不需要命令方块了。