本文将介绍如何用指令实现点击告示牌就对玩家进行传送的效果。告示牌传送可以更优雅地替代点击按钮传送。
本教程适用于我的世界基岩版、网易我的世界基岩版(手机版)。
部分指令介绍
testfor 目标选择器
testfor指令用于检测是否有后面目标选择器指定的实体或玩家,当存在目标条件就成立,不存在就不成立。它是一条纯粹的条件指令,我们可以用红石比较器或者连锁命令方块的有条件模式来搭配它。
summon <entityType: EntityType> <nameTag: string> [spawnPos: x y z]
<entityType: EntityType>
是该实体的我的世界标准名称,<nameTag: string>
是我们取给该实体的名字,[spawnPos: x y z]
是坐标。该指令可以召唤一个带有名字的实体到一个位置上,坐标位置可以是绝对坐标,也可以用~ ~ ~
代替,表示为命令执行者或命令方块所在的位置。
原理介绍
在基岩版里不能使用指令直接让玩家与告示牌互动,当我们可以通过召唤一个隐身的蝙蝠在告示牌那里。玩家点击告示牌就会杀死蝙蝠,检测到蝙蝠不存在时传送玩家并再重新召唤一只蝙蝠实现循环。
指令实践
我们可以先在墙上放置一个告示牌,记录告示牌的位置坐标。
在后面右边放置一个循环命令方块,无条件,保持开启。该指令可以将名字为cs1的蝙蝠传送到告示牌。
tp @e[name=cs1] 292 67 -3
再在后面中间放一个循环命令方块,无条件,保持开启。该指令可以检测名字为cs1实体的存在。
testfor @e[name=cs1]
再在上面那个命令方块的上面放置一个循环命令方块,无条件,保持开启。(其实这些命令方块的位置可以自己摆放,这里只是为了简单做的示例)。该命令方块能将名字为cs1的实体隐身。
effect @e[name=cs1] invisibility 99999 255 true
为了让周围的玩家能够空手一击必杀那只蝙蝠,我们可以给予附近的玩家力量效果。在后面左侧放置一个循环命令方块,无条件,保持开启。
effect @a[r=5] strength 2 1 true
我们放置一个红石比较器检测testfor那条指令的命令方块,在比较器后端放一个方块,方块背面放置一个红石火把。这样就形成了一个非门,这样当检测到没有目标实体时,红石火把才会亮起触发周围的命令方块。
我们在红石火把旁边放2个命令方块,脉冲、无条件、需要红石。两个命令方块分别写上以下两条指令:
summon bat cs1 ~ ~ ~
该指令能召唤一只名称为cs1的蝙蝠。
tp @p x y z
这是传送指令,xyz填写你想要传送玩家到的坐标。
全部命令方块放置完成就是以上的样子了。这样告示牌传送就搭建完成了。最开始如果没有召唤蝙蝠的话,我们可以手动输入/summon bat cs1 ~ ~ ~
召唤蝙蝠来启动它。