用execute命令点石成金 我的世界命令方块教程
execute还有一种探测方块执行的用法。 这种拓展用法就是:
execute <实体的定义> <执行事件的x坐标> <执行事件的y坐标> <执行事件的z坐标> detect <执行探测的x坐标> <执行探测的y坐标> <执行探测的z坐标> <探测方块id> <探测方块数据值> <事件指令>
看上去很繁琐,实际上就是把原先的execute和testforblock进行了合体。detect后面的坐标,就是用testforblock要探测的坐标,一般在execute指令中还是用偏移 ~ 的。方块ID、数据值就不用说了。ID在1.8后已经更新成英文ID了,数据值还是数字。该指令的用处就是:先找到执行事件的坐标,并用这个坐标代替命令方块探测testforblock,成立执行事件指令,不成立则跳过。
现在我们继续开始实战吧!
点石成金——细究探测的坐标
难度:★★☆☆☆
点石成金,就是踩上石头就变成金块。一共有两步:探测踩上的是不是石头,替换石头为金块。
利用execute指令,即可一步完成。上篇中提到脚占有的方块坐标皆是 ~ ,脚下的方块y坐标需要降低1格,即~-1。
而探测方块式的execute指令有两个y坐标偏移要填,到底应该将哪个y坐标降低1格呢?
将脚下的方块替换成金块指令:
/setblock ~ ~-1 ~ gold_block 0 replace
第一种execute格式:
/execute @a ~ ~-1 ~ detect ~ ~ ~ stone 0 setblock ~ ~-1 ~ gold_block 0 replace
踩下石头的结果:
第二种execute格式:
/execute @a ~ ~ ~ detect ~ ~-1 ~ stone 0 setblock ~ ~-1 ~ gold_block 0 replace
踩下石头的结果:
很显然第二种格式是对的,原因就是探测的方块位置一样,但执行的位置不一样。从第一种的执行事件指令的坐标是在脚下踩得方块(石头),探测方块的偏移没有变,还是石头处。但执行事件指令/setblock的放置坐标又下移了一格,因此金块放错了地方。
第二种执行事件的坐标就是在原处,探测方块往下了一格,探测了脚下的方块。执行事件的指令setblock也是放置在脚下,所以没有错。
将第一种格式修改成下面的指令依旧可以成功,原因请自行思考吧!