此页面作为一个计划施工中。计划收录基岩版命令有关内容。
欢迎参与编辑工作!
简介
本教程致力于帮助Minecraft基岩版的命令初学者。
如果您能来到这个Wiki并看到这篇教程,您已经入门一半了。命令入门非常简单,接下来只需要耐心、自信心与好奇之心,相信您一定能学好命令!
参考:
重难点归纳
命令方块
- 在单人游戏里,作弊必须开启才可以编辑命令方块。在多人游戏中,只能由创造模式中的管理员所编辑。
- 当世界中有很多命令方块,尤其是电路高速运转时,不显示输出可以减少内存使用以处理很多请求。
- 连锁型命令方块只在指向它的命令方块执行命令时才会执行命令。
- 条件制约:只有当连锁方块的指向的反方向的命令方块成功执行命令时才会执行命令。
- 保持开启:连锁型命令方块将在感应后执行命令;脉冲型命令方块在设置完毕后将立即激活,且此后将无法再次执行。
- 当一个连锁方块被激活时,不管它是否执行命令,只要指向另一个连锁方块,它也同样会发送出准备执行命令的信号。
- 连锁中的方块将在同一游戏刻执行命令。
- 连锁执行的信号无法传递给一个已经在这个游戏刻执行过命令的方块。[1]
命令方块矿车
- 即使
commandBlocksEnabled游戏规则被设置为False,命令方块矿车也可以运行。
命令
系统
记分板计时器
原理
循环命令方块每1秒执行20次,利用这个特性进行记分板操作,检测记分板分数从而达到计时目的。
步骤
放置一个盔甲架,命名为“A”,执行:
/scoreboard objectives add cycle dummy
添加记分项cycle。
/scoreboard players set @e[type=armor_stand,name="A"] cycle 0
把盔甲架的分数设置为0。
命令方块链执行:
scoreboard players remove @e[type=armor_stand,name="A",scores={cycle=1..}] cycle 1
每刻给盔甲架的分数减少1,当盔甲架的分数为0,不满足条件”cycle=1..”时停止。
scoreboard players set @e[type=armor_stand,name="A",scores={cycle=0}] cycle 40
当盔甲架分数为0时,将分数设置为40,重置这个2秒的时间循环。
隐藏离线玩家
原理
使用两个记分项,一个用来储存分数,另一个用来显示分数。只需要让显示分数的记分项只跟踪在线玩家的分数就可以了。
步骤
执行:
/scoreboard objectives add point1 dummy
添加记分项point1,用于储存分数。
/scoreboard objectives add point2 dummy
添加记分项point2,用于显示分数。
/scoreboard objectives setdisplay sidebar point2
将记分项point2显示在右侧边栏。
循环命令方块执行:
/execute @a ~ ~ ~ scoreboard players operation @s point2 = @s point1
让所有玩家把自己储存分数的记分项point1赋值给用于显示分数的point2。
定时执行:
/scoreboard players reset * point2
重置记分项point2的分数(包括离线玩家)。
算法
遍历法[2]
原理
利用目标选择器@r,每次选中一名玩家进行判定。
效率:1秒判定20次(循环命令方块)。
步骤
无序遍历
命令方块链执行:
tag @r[tag=!snowball] add snowball
execute @a[tag=snowball] ~ ~ ~ clear @s snowball 0 0
(条件制约)execute @a[tag=snowball] ~ ~ ~ tag @s remove snowball
execute @a[tag=snowball] ~ ~ ~ give @s snowball
execute @a[tag=snowball] ~ ~ ~ tag @s remove snowball
给没有雪球的玩家雪球。
有序遍历
命令方块链执行:
tag @r[tag=!snowball2] add snowball
execute @a[tag=snowball] ~ ~ ~ clear @s snowball 0 0
(条件制约)execute @a[tag=snowball] ~ ~ ~ tag @s add snowball2
(条件制约)execute @a[tag=snowball] ~ ~ ~ tag @s remove snowball
execute @a[tag=snowball] ~ ~ ~ give @s snowball
execute @a[tag=snowball] ~ ~ ~ tag @s remove snowball
给没有雪球的玩家雪球,但能1秒判定20次而不重复。