Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

在制作地图时需要一些触发命令的装置,让玩家无需自己去输入放置命令来触发。本教程介绍几种触发命令的方式。

自定义命令类

gamerule+stats+scoreboard

使用gamerule作为自定义命令,玩家使用时输入/gamerule 自定义规则名 检测时对应的数值

第一步:自定义游戏规则

确定好自定义的规则名后,直接输入/gamerule 自定义规则名 任意数字

第二步:记分板相关准备

首先输入/scoreboard objectives add 自定义变量名 dummy,用来储存等会传过来的值
接下来有两种办法储存变量的值。
  • 用虚拟实体,输入/scoreboard players set 虚拟实体名 自定义变量名 0。这个虚拟实体只提供名字,不会被kill影响。
  • 用盔甲架,先在电路区域放置好盔甲架并把盔甲架命令,接着输入/scoreboard players set @e[name=盔甲架名字] 自定义变量名 0

第三步:用stats将gamerule的值输入记分板

放置一个命令方块,输入命令gamerule 自定义规则名。这个命令将查询当前规则的值。
打开F3调试界面,记下这个命令方块的坐标,输入/stats block x y z set QueryResult 虚拟实体名或盔甲架名 自定义变量名。这条命令将把命令方块gamerule查询到的值返回到记分板上。
高频电路连接命令方块,使其不断刷新查询的值。此时stats建立的连接将把查询到的值返回记分板。

第四步:电路检测记分板值并触发命令

提示玩家输入gamerule 自定义规则名 数值,数值为你想检测的数值。
检测时:
如果用盔甲架,高频接入execute,配合选择器的记分板分数探测会方便一些,如果检测的值成立则用fill/setblock红石块等方法触发电路。
如果用虚拟实体,高频接入命令/scoreboard players test 虚拟实体名 自定义变量名 数值 数值,数值为你想检测的数值,两个数值需要一样。最后用比较器输出即可。

示例
1./gamerule bomb 0,使用/gamerule bomb查询可以看到bomb = 0的提示。

2./scoreboard objectives add vbomb dummy

/scoreboard players set fakename vbomb 0

两条命令先设置名为vbomb的变量,再给fakename这个虚拟实体设置vbomb变量的值为0。

3.将gamerule bomb放入位于<200,50,-100>的命令方块中。用高频电路连接。

4.输入/stats block 200 50 -100 set QueryResult fakename vbomb

5.高频连接/scoreboard players test fakename vbomb 1 1,用比较器连接好命令电路。

6.提示玩家输入/gamerule bomb 1开始某样操作。

7.在命令电路中放置/gamerule bomb 0的命令方块。完成。

triggle+scoreboard

使用triggle需要将记分板变量交给玩家使用,所以需要先使用高频或低频电路给予玩家使用记分板变量的权力。

第一步:记分板相关准备

创建记分板变量scoreboard objectives add 自定义变量名 trigger。应当指出的是这里的判据不是dummy而是triggle。
高频接入scoreboard players enable @p或@a 自定义变量名选择器可以按需选择。这条命令让指定玩家能修改某个变量的值。

第二步:使用与检测

提示玩家输入triggle 自定义变量名 set 数值
关于检测,请见上文中使用虚拟实体的检测方法。

主动交互类

clear+空地图

这种方法的原理是让玩家打开空地图,然后高频连接clear地图的命令方块,比较器连接并触发电路,同时在电路中安排返还空地图的命令。

但是存在局限性,所以一般用于一些小游戏中。

相关命令:clear @p filled_map

give @p map

雪球抛掷+scoreboard相关判据

输入命令/scoreboard objectives add 变量名 stat.useItem.minecraft.snowball,即可统计雪球抛出的次数。

通过scoreboard的test项触发电路,然后用scoreboard相关命令复原记分板值。

testforblock检测方块状态

有些机关,通过检测方块状态触发命令。

检测拉杆状态:testforblock x y z lever 相关数据值,如检测朝向z轴正向的拉杆,填入11,则当拉杆被拉下,在外观上看没有电路,也能触发机关。

检测展示框的旋转状态也可以。详见物品展示框

木牌点击

这里提供一份模板,使用到了Json文本,关于Clickevent的使用详见教程/Json文本

命令中standing_sign是立着的木牌,wall_sign是墙上的木牌,随需要选择。

/setblock x y z minecraft:standing_sign或minecraft:wall_sign 0 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:\"第四条命令\"}}"}

被动探测类

漏斗低频+范围testfor

搭建一个朝向连通的漏斗组,并在里面放入物品,用比较器连通其中一个漏斗,就制作好了漏斗低频。

testfor中比较器填入r=...的项,检测附近的玩家,即可实现一些被动触发的机关。

善用红石元件

陷阱箱,绊线与绊线钩都是用于机关设计的,善用他们可以省去很多搭建电路的麻烦。

User:Kakagou12341/Command Block Tutorials

Advertisement