大家好。今天教大家如何制作矿石探测器。就是当玩家手上拿了一个东西后,会出现积分板,告诉玩家地下有多少矿石,还告诉玩家是什么矿石。
这个机器比较简单,主要是使用了新的{CommandStats},或者直接/stats。
首先,我们需要一个探测玩家手里有没有拿着一个探测器。本人这里使用的探测器,是一个地狱星,有自定义名字和介。
像其他的指令方块作品,都要有脉冲来激活。这里本人使用指令方块高速脉冲。
第一,就是要一个积分板变量。本人这里使用"Hold"名字的积分板,dummy变量。所以,第一个指令方块就是清空玩家的Hold积分板,分数变成0。指令:
- /scoreboard players set @a Hold 0
- /scoreboard players set @a Hold 1
- {SelectedItemSlot:0,Inventory:[{id:"minecraft:nether_star",Damage:0s,Count:1b,Slot:0b,tag:{display:{Name:"Ore Detector",Lore:["Finds any ore"]}}}]}
- /scoreboard players set @a Hold 1
- {SelectedItemSlot:1,Inventory:[{id:"minecraft:nether_star",Damage:0s,Count:1b,Slot:1b,tag:{display:{Name:"Ore Detector",Lore:["Finds any ore"]}}}]}
注意:顺序一定要是先清空,然后再探测,否则就无法探测得到了。
之后,下一步就是另外一个机器。这个机器可有可无,主要是美观使用。主要就是当玩家手拿物品后,屏幕左边会出现积分板,玩家没有手拿物品,那就不会出现。这个主要是使用积分板的teams做的。
首先,我们要创建一个teams。指令是:
- /scoreboard teams add Gold
- /scoreboard teams option Gold color gold
- /scoreboard objectives setdisplay sidebar.team.gold Underground
之后就要做一个机器了。刚才做的是,一旦有玩家在Gold队伍里面,就会看见积分板。所以我们需要一个装置:一旦玩家手拿物品,那就会进入Gold队伍,没拿那就会退出Gold队伍。指令分别是:
- /execute @a[score_Hold_min=1] ~ ~ ~ /scoreboard teams join Gold @a[r=0]
- /execute @a[score_Hold=0] ~ ~ ~ /scoreboard teams leave Gold @a
之后还需要一个显示的积分板,也就是Underground。玩家可以随便输入。所以先创建一个积分板:
- /scoreboard objectives add Underground dummy
- /scoreboard players set Diamond Underground 0
- /scoreboard players set Gold Underground 0
- /scoreboard players set Coal Underground 0
- /scoreboard players set Iron Underground 0
- /scoreboard players set Lapis Underground 0
- /scoreboard players set Emerald Underground 0
- /scoreboard players set Redstone Underground 0
- /scoreboard players set Air Underground 0
以上就是积分板系统了。之后就要使用/stats了。游戏里一共有7种矿石(不包括地狱石英矿),所以我们需要14个指令方块。2个指令方块控制一种矿石。首先,来控制煤。
第一条指令是:
- /execute @a[score_Hold_min=1] ~ ~ ~ /fill ~ ~20 ~ ~ ~-30 ~ minecraft:jungle_stairs 0 replace minecraft:coal_ore 0
之后事情还没完。因为这条指令只是把煤换成了拥有Damage为0的台阶,之后还要把台阶换回煤。指令是:
- /execute @a[score_Hold_min=1] ~ ~ ~ /fill ~ ~20 ~ ~ ~-30 ~ minecraft:coal_ore 0 replace minecraft:jungle_stairs 0
- /stats block ~ ~-1 ~ set AffectedBlocks Coal Underground
玩家会问,这么复杂做什么,直接把煤块换成煤块不就好了?答案是不行,因为/fill的replace功能和/setblock的一样。所以,如果是同一种方块,/fill并不会替换。所以我们要先替换成其他方块,然后再替换回来。
之后就都是一样了。只要改下替换ID就可以了。比如:(/stats每个把台阶替换矿的指令方块都要弄一下。)
- /execute @a[score_Hold_min=1] ~ ~ ~ /fill ~ ~20 ~ ~ ~-30 ~ minecraft:jungle_stairs 1 replace minecraft:iron_ore 0
- /execute @a[score_Hold_min=1] ~ ~ ~ /fill ~ ~20 ~ ~ ~-30 ~ minecraft:iron_ore 0 replace minecraft:jungle_stairs 1
这个机器一个缺点是,如果玩家在低于30格(y<30),那么机器就会坏掉。因为/fill或者/setblock无法替换虚空内的方块。所以积分板只会显示0,无法进行探测。
另附:百度云存档下载地址
视频:
http://v.youku.com/v_show/id_XNzQxMzk4MzQw.html
==========END===========