条目中某些信息已经不符合当前版本情况。
在制作地图时需要一些触发命令的装置,让玩家无需自己去输入放置命令来触发。本教程介绍几种触发命令的方式。
自定义命令类
trigger+scoreboard
使用trigger需要将记分板变量交给玩家使用,所以需要重复不断地给予玩家更改记分板变量的权限。
- 第一步:记分板相关准备
- 创建记分板变量
scoreboard objectives add 自定义变量名 trigger。应当指出的是这里的准则不是dummy而是trigger。 - 在循环型命令方块中输入
scoreboard players enable @p或@a 自定义变量名,选择器可以按需选择。这条命令让指定玩家能修改某个变量的值。
- 第二步:使用与检测
- 提示玩家输入
trigger 自定义变量名 set 数值。 - 最后在命令方块里打上
/execute if entity @a[score={自定义变量名=<数值>}] <子命令...>
主动交互类
clear+空地图
这种方法的原理是让玩家打开空地图,然后高频连接clear地图的命令方块,比较器连接并触发电路,同时在电路中安排返还空地图的命令。 但是存在局限性,所以一般用于一些小游戏中。
相关命令:/clear @p filled_map与/give @p map
雪球抛掷+scoreboard相关判据
输入命令/scoreboard objectives add 变量名 stat.useItem.minecraft.snowball,即可统计雪球抛出的次数。
通过/execute if entity @a[score={变量名=...}]触发电路,然后用scoreboard相关命令复原记分板值。
testforblock检测方块状态 [仅基岩版]
有些机关,通过检测方块状态触发命令。
检测拉杆状态:testforblock x y z lever 相关数据值,如检测朝向z轴正向的拉杆,填入11,则当拉杆被拉下,在外观上看没有电路,也能触发机关。
检测展示框的旋转状态也可以。详见物品展示框。
告示牌点击
这里提供一份模板,使用到了JSON文本。
命令中standing_sign是立着的告示牌,wall_sign是墙上的告示牌,随需要选择。也可以通过/data merge block修改告示牌内容。
/setblock x y z minecraft:standing_sign或minecraft:wall_sign replace
{Text1:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"''第一条命令''\"},text:\"''提示信息''\"}",
Text2:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"''第二条命令''\"}}",
Text3:"{\"clickEvent\":{\"action\":\"run_command\",\"value\":\"''第三条命令''\"}}",
Text4:"{\"clickEvent\":{\"action:run_command\",\"value\":\"''第四条命令''\"}}"}
被动探测类
漏斗低频+范围检测到实体
搭建一个朝向连通的漏斗组,并在里面放入物品,用比较器连通其中一个漏斗,就制作好了漏斗低频。
/execute if entity中比较器填入distance的项,检测附近的玩家,即可实现一些被动触发的机关(部分命令无法在目前基岩版实现,如记分板中目前只能使用dummy虚拟类型,触发可能因此受限)。
善用红石元件
陷阱箱,绊线与绊线钩都是用于机关设计的,善用他们可以省去很多搭建电路的麻烦。
参见
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||