其指令如下:
A······testfor @a[r=5]
B······scoreboard players add @a[r=5,c=1,x=20,y=4,z=200] count 1
C······give @a[score_count=5,r=5,x=20,y=4,z=200] 264
这个逻辑组会检测半径5格内是否有玩家存在,如果有就给这个玩家的count计分项加上1,增加过后如果这名玩家的count计分项分数不超过5,就给予这名玩家一个钻石。
也就是说,这可以使得每个经过这里的玩家都领到一些钻石,并且每人最多只能领取5颗。但由于红石电路的特性,导致理想很美好,实践起来可能有两个问题:
①如果玩家跑得太快,可能导致虽然检测到了,但是并没有给玩家钻石。
②如果保护没做好,有些玩家可能会不小心破坏掉红石脉冲,导致逻辑组停止更新
这就是红石逻辑组。如果你还不清楚,我们再来看一个例子:
?A→B→C(插图95-3)
图例
?······木制压力板
→······红石中继器
这也是一个Java1.6.1版本的红石逻辑组。但它的核心仅仅只有一个压力板来控制运行,并没有更新逻辑组的装置。所以这是一个脉冲型逻辑组,每次进入运行状态仅仅只会执行一次而已。
它的通路也是使用红石中继器来控制命令方块执行的顺序。那么这个逻辑组有什么用呢?
其指令如下:
A······playsound mob.villager.yes @p[x=21,y=4,z=252,r=4]~1 ~1 ~
B······give @p[x=21,y=4,z=252,r=4] 32
C······tell @p[x=21,y=4,z=252,r=4]你获得了菜鸟的最爱!
这将会给处于压力板周围4格内的最近玩家(一般是踩着压力板的玩家)一个『枯萎的灌木』,并同时发出村民赞同的声音,告诉玩家『你获得了菜鸟的最爱!』。
这就是红石逻辑组的基础内容。如果你成功理解了本章的内容,那不妨发挥一下你的想象力,去尝试以红石逻辑组的形式做几个有点用的逻辑组出来,本章到此为止。
(注:在不同指令教程内『逻辑组』也有可能会有其他的叫法,但总之都是一个东西)
(此章节有少部分概念和名词来自『指令方块进阶教程——模块(面向过程)』)