指针所指之处为fill高频。上面的红石块将放置在此处。

由于该模块的核心为fill高频。所以电路结构非常简单,就是很多命令方块围着一根红石块棒子,我就不上截图了。
然而其中的时序是非常严谨的。由于fill高频是有一个更新顺序,这个顺序是由坐标决定,站里也有人研究,因此在这里不详细说明了。
下面我将按照时序介绍指令而不是逻辑顺序。
①
这个命令是将所有问号格子的旗帜标记取消。即取消标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] flag 0 {ItemRotation:0b,Item:{id:"minecraft:filled_map",Count:1b,Damage:106s}}
复制代码
②
高频产生:
- fill ~-1 ~-1 ~ ~15 ~-1 ~ redstone_block
复制代码- fill ~-1 ~1 ~ ~15 ~1 ~ air
复制代码
给予所有的格子左键标志:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] l 1
复制代码
将所有被旋转过一次的未翻开格子给予右键标志:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark=0,score_mark_min=0] r 1 {ItemRotation:1b,Item:{id:"minecraft:filled_map",Count:1b,Damage:1s}}
复制代码
③
将上方状态栏的展示框拨正:
- entitydata @e[18,27,22,dx=10,dy=3,dz=1] {ItemRotation:0b}
复制代码
取消所有未旋转的展示框的右键标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark=0,score_mark_min=0] r 0 {ItemRotation:0b}
复制代码
取消所有有装地图的展示框的左键标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] l 0 {Item:{id:"minecraft:filled_map"}}
复制代码
将所有被插旗的格子的内容变为旗帜:
- entitydata @e[type=ItemFrame,score_flag=1,score_flag_min=1] {Item:{id:"minecraft:filled_map",Count:1b,Damage:105s}}
复制代码
此四条不重时序,将空白格子的周围格子翻开:
- execute @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark_min=2,score_mark=2] ~ ~ ~ scoreboard players set @e[dx=1,dy=1,dz=1,type=ItemFrame,score_flag=0,score_flag_min=0,score_high=0,score_high_min=0] l 1 {Item:{id:"minecraft:filled_map",Count:1b,Damage:1s}}
复制代码- execute @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark_min=2,score_mark=2] ~ ~ ~ /scoreboard players set @e[dx=1,dy=-1,dz=1,type=ItemFrame,score_flag=0,score_flag_min=0,score_high=0,score_high_min=0] l 1 {Item:{id:"minecraft:filled_map",Count:1b,Damage:1s}}
复制代码- execute @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark_min=2,score_mark=2] ~ ~ ~ /scoreboard players set @e[dx=-1,dy=1,dz=1,type=ItemFrame,score_flag=0,score_flag_min=0,score_high=0,score_high_min=0] l 1 {Item:{id:"minecraft:filled_map",Count:1b,Damage:1s}}
复制代码- execute @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark_min=2,score_mark=2] ~ ~ ~ /scoreboard players set @e[dx=-1,dy=-1,dz=1,type=ItemFrame,score_flag=0,score_flag_min=0,score_high=0,score_high_min=0] l 1 {Item:{id:"minecraft:filled_map",Count:1b,Damage:1s}}
复制代码
将所有被旋转的旗帜格子进行右键标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark=0,score_mark_min=0] r 2 {ItemRotation:1b,Item:{id:"minecraft:filled_map",Count:1b,Damage:105s}}
复制代码
探测是否有被踩中的雷(此条接比较器,往失败模块输出):
- testfor @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_high_min=1,score_high=1] {Item:{id:"minecraft:filled_map",Count:1b,Damage:108s}}
复制代码
④
将所有旗帜格子进行旗帜标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] flag 1 {ItemRotation:0b,Item:{id:"minecraft:filled_map",Count:1b,Damage:105s}}
复制代码
将所有被标记的格子的数字调整到非法值:
- scoreboard players set @r[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_high=1,score_high_min=1] mine 9
复制代码
将旋转的问号格子进行右键标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_mark=0,score_mark_min=0] r 3 {ItemRotation:1b,Item:{id:"minecraft:filled_map",Count:1b,Damage:106s}}
复制代码
⑤
将所有没有方块依附的展示框后方放上方块:
- /execute @e[type=ItemFrame] ~ ~ ~ detect ~ ~ ~-1 air 0 setblock ~ ~ ~-1 command_block 0 keep {Command:"setblock 16 3 -15 redstone_block"}
复制代码
将所有拥有右键标记的空白格子内容变为旗帜:
- entitydata @e[score_r=1,score_r_min=1,type=ItemFrame] {ItemRotation:0,Item:{id:"filled_map",Damage:105}}
复制代码
将所有拥有右键标记的旗帜格子内容变为问号:
- entitydata @e[score_r=2,score_r_min=2,type=ItemFrame] {ItemRotation:0,Item:{id:"filled_map",Damage:106}}
复制代码
将所有拥有右键标记的问号格子内容变为空白(这里之所以格式不同是因为留个中键的接口):
- execute @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_r=3,score_r_min=3] ~ ~ ~ setblock ~ ~ ~-4 redstone_block
复制代码
胜利检测,当空白格子、问号格子和旗帜格子之和为10时游戏胜利(输出接胜利模块):
- testfor @a[score_s=10,score_s_min=10]
复制代码
旗帜数目检测(输出接旗帜统计):
- testfor @e[score_flag=1,score_flag_min=1,type=ItemFrame]
复制代码
将所有被踩中的雷进行标记:
- scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame,score_high_min=1,score_l_min=1,score_l=1] mark2 1
复制代码
翻开被踩中的空白格子(其余数字也有各自的指令,暂不详述):
- entitydata @e[type=ItemFrame,score_l=1,score_l_min=1,score_mine=0,score_mine_min=0] {ItemRotation:0b,Item:{id:"filled_map",Damage:104}}
复制代码
对满足胜利条件的格子进行标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] mark 3 {Item:{id:"minecraft:filled_map",Count:1b,Damage:105s}}
复制代码- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] mark 5 {Item:{id:"minecraft:filled_map",Count:1b,Damage:106s}}
复制代码- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] mark 4 {Item:{id:"minecraft:filled_map",Count:1b,Damage:1s}}
复制代码
⑥
探测满足胜利条件的格子:
- testfor @e[score_mark=5,score_mark_min=3,type=ItemFrame]
复制代码
⑦
重置所有的标记:
- /scoreboard players set @e[19,17,22,dx=9,dy=9,dz=1,type=ItemFrame] mark 0
复制代码 |