替换方块实体

原先作者为Max,http://www.bilibili.com/video/av6427008

如果我们希望把一些方块替换为一个方块实体,比如是箱子,我们会发现我们没法使用fill命令。

因为fill命令的replace模式,如果替换成的方块是一个方块实体,那么replace参数后的数据就是NBT而不是被替换方块的数据,故此是不可行的。
在这种情况下,我们可以采取间接的方法:fill一些不能独立存在的方块(并且被破坏时会产生掉落物),提供方块更新让它们掉落,然后execute那些掉落物设置方块。

产生掉落物

首先我们需要把目标地区(x1, y1, z1到x2, y2, z2,其中x1, y1, z1为区域内x, y, z最小的坐标)的指定方块,以石头为例子,替换为不能独立存在的方块,我们以半道门(就是一个木门方块,完整的木门需要两个方块)做替换的东西。

fill x1 y1 z1 x2 y2 z2 minecraft:wooden_door 0 replace minecraft:stone 0

然后我们需要产生方块更新。我们之前说过,我们可以使用cloneforce模式来为整个区域产生方块更新。

clone x1 y1 z1 x2 y2 z2 x1 y1 z1 replace force

然后我们就能产生掉落物了。

替换为箱子

这个就很简单了,我们首先execute掉落物设置方块,然后杀掉那些掉落物。

scoreboard players tag @e[type=item] add temp {Item:{id:"minecraft:wooden_door"}}
execute @e[type=item,tag=temp] ~ ~ ~ setblock ~ ~ ~ minecraft:chest
kill @e[type=item,tag=temp]

这例子看似很容易,其实还是挺难想出来的,而且其中搞方块更新的部分还是比较麻烦的。如果不特地产生一次方块更新,如果石头不是连续的,那么其中的一些木门就会没法获得更新,不会自我破坏,令整个检测不成功。

results matching ""

    No results matching ""