我的世界如何将具有nbt的非容器方块加入结构文件中

(该教程适用于1.12.2,之后的版本只要能获取到方块的nbt数据即可)

试图创建具有爬墙红石的结构时发现复制出的结构丢失了所有的爬墙红石方块,实际上所有具有nbt的非容器实体方块都难以被直接复制进模板。在参考了一些ruins模板包后摸索出了如下添加具有nbt方块进模板的方法:

比如要搭建这样一个结构:

这个结构中包含了具有nbt数据的爬墙红石,此时使用/parseruin指令左键基岩来生成模板,而后再使用/testruin生成结构时出现的结构是这样的:

结构丢失了所有爬墙红石,导致拉杆无法正常开启红石灯。

生成的模板文件rule部分如下:

可以看到在rule6中ruins的确加入了爬墙红石的规则,但是它将所有的爬墙红石都放进了一条规则里而且没有添加相应的nbt,这导致爬墙红石由于没有任何方向连接而直接消失。而如果想让爬墙红石能正常地被添加进结构就需要将nbt数据写入rule里面。

如果有crt,直接ctrl+鼠标中键点击爬墙红石:

会获得一个具有nbt数据的爬墙红石物品:

手持爬墙红石,输入/ct hand即可获取该物品的nbt数据:

点击复制,然后来到模板文件中,新建一条规则(因为每种形态的爬墙红石都具有不同的nbt,需要单独建立规则,直接使用原规则难以整理)

rule8=0,100,redstonepaste:redstonepaste-0

在”redstonepaste:redstonepaste”前加入”teBlock;”,在”redstonepaste:redstonepaste”后加”;”并将刚才复制的nbt数据粘贴:

rule8=0,100,teBlock;redstonepaste:redstonepaste;<redstonepaste:redstonepaste>.withTag({BlockEntityTag: {facedata: [0, 0, 0, 0, 0, 0] as int[], id: "minecraft:redstonepastete", faces: [0, 3, 3, 0, 0, 0] as int[], facetype: [0, 0, 0, 0, 0, 0] as int[]}, display: {Lore: ["(+NBT)"]}})-0

删除掉多余部分:前面的”<redstonepaste:redstonepaste>.withTag({BlockEntityTag:”及后面的”, display: {Lore: [“(+NBT)”]}})”,删除掉所有的”as int[]”并为其前面的数组开头加上”I;”,”id: “minecraft:redstonepastete””则自行决定是否保留,这对结果没有影响。整理结果如下:

rule8=0,100,teBlock;redstonepaste:redstonepaste;{facedata:[I;0,0,0,0,0,0],faces:[I;0,3,3,0,0,0],facetype:[I;0,0,0,0,0,0]}-0

注意一定要在数组开头写上”I;”,否则生成结构后会因数组越界导致坏档。

其他爬墙红石同理,最后将相应的规则写入相应的位置。

保存文件后无需重启ruins自带热加载太爽了,再生成一遍结构:

由于生成顺序的问题会导致天花板的爬墙红石掉落,这是爬墙红石本身的问题,如果是埋入地下的结构则不太会出现该问题(除非生成在矿洞里),地上结构会受其影响。

没有crt或无法获取nbt方块物品形态的解决方法:

输入/blockdata ~ ~ ~ {}(坐标替换为要获取的方块所在的位置),而后会在聊天栏出现这条信息:

想办法将下面的数据复制出来,而后同上面的步骤添加进规则文件即可,相较于crt优点是没有多余的空格,也不需要手动删除”as int[]”等字段和添加”I;”,还能用于复制没有物品形式或者获取后丢失nbt数据的实体方块,缺点是难以复制。

其他具有nbt且无法正常被复制进模板文件的实体方块同理。

注意:如果结构里有像爬墙红石这样的连方向也写在nbt的方块就不要令其能旋转了,否则爬墙红石依旧失效。

Copyright © 2018-2023 PHP源码网 版权所有
PHP源码网 » 我的世界如何将具有nbt的非容器方块加入结构文件中

提供最优质的资源集合

立即查看 了解详情