[lightblue_wool]电路全图[lightblue_wool]
详情请下载存档自行观察
[lightblue_wool]scoreboard 预备项目[lightblue_wool]
system dummy 探测玩家是否手持“疯锯”
mined stat.mineBlock.minecraft.log 探测玩家是否挖掘木头方块
mined2 stat.mineBlock.minecraft.log2 探测玩家是否挖掘木头方块
marker dummy 用于辅助execute命令,标记marker
chosen dummy 用于辅助execute命令,标记killer
使用scoreboard指令设置好这些分数
[purple_wool]核心思路[purple_wool]
以玩家撸木头掉落的木头方块为标记
在其周围上方召唤有名字的盔甲架
利用盔甲架遵循物理原则的原理
使用execute+detect指令不断去除
新招换的盔甲架脚下的木头方块和
树叶方块。
[lightblue_wool]电路流程[lightblue_wool]
[purple_dye]首先先召唤好我们的marker以作备用[purple_dye]
为防止短路,先清空场上所有marker,
并将marker移动到一个合适的位置(代码中为
我的命令方块群的)
再将marker的score_maker设为1备用
下列代码按顺序依次执行
- tp @e[name=marker,type=ArmorStand] -22 59 -29
复制代码- kill @e[type=ArmorStand,name=marker]
复制代码- summon ArmorStand ~ ~ ~ {NoGravity:1b,CustomName:marker,Invisible:1b,Invulnerable:1b,Silent:1b,Small:1b,}
复制代码- /scoreboard players set @e[type=ArmorStand,name=marker] marker 1
复制代码 [purple_dye]接下来是酱油...不对,备用的marker[purple_dye]
应该是如同下图这样的
[purple_dye]接下来用高频脉冲选择物品电路将手持MadSaw[purple_dye]
的玩家的score_system调成1(★代表数字1~9),
接9列电路。同时后面接与非电路。
一旦不输出,就由红石火把将玩家的score_system
调整回到0。
输入端
- /scoreboard players set @a system 1 {SelectedItemSlot:★,Inventory:[{Slot:★b,id:"minecraft:blaze_rod",Damage:0s,tag:{CanDestroy:["minecraft:log","minecraft:log2"],ench:[{id:51,lvl:10}],display:{Name:"MadSaw",Lore:["Use me to cut","the tree, things","will be easy"]}}}]}
复制代码 输出端
- scoreboard players set @a system 0
复制代码 [purple_dye]高频激活下面这组命令,用于[purple_dye]
即使重置score_mined和score_mined2
用于区分玩家使用疯镐撸的木头
还是手撸的。
- scoreboard players set @a[score_system=0,score_system_min=-100] mined2 0
复制代码- scoreboard players set @a[score_system=0,score_system_min=-100] mined 0
复制代码 [purple_dye]高频激活下面这组命令,一旦[purple_dye]
玩家同时持有疯镐(system≥1)
且挖掘过木头方块(mined,mined2≥1)
则输出。两组接或门输出,即只要有一个
输出就进行下一步。
- testfor @a[score_mined2_min=1,score_system_min=1]
复制代码- testfor @a[score_mined_min=1,score_system_min=1]
复制代码 [purple_dye]接下来按顺序激活下面这组命令[purple_dye]
用于回收上一次剩下的标志物、(装备架)
疯镐。同时将marker传送至场上最后一个
物品处,也就是玩家刚刚挖出来的木头的位置
- kill @e[type=ArmorStand,name=!marker,score_chosen_min=1]
复制代码- /clear @a minecraft:blaze_rod 0 100 {CanDestroy:["minecraft:log","minecraft:log2"],ench:[{id:51,lvl:10}],display:{Name:"MadSaw",Lore:["Use me to cut","the tree, things","will be easy"]}}
复制代码- execute @e[type=Item,c=1] ~ ~ ~ tp @e[type=ArmorStand,name=marker] @e[type=Item,c=1]
复制代码 [purple_dye]后接summon命令,在已经传送完成的[purple_dye]
在被打掉的木块位置的marker周围
5×5的区域内,于y=127生成盔甲。
取名为killer1到killer25(总共需要25个)
注意,这里我们调整了killer们的动量
因为在127生成可以照顾到较高的树木,
为了减少掉下来的时间,把y冲量调整为-10.0d
★代表Killer名字的编号,从1到25
☆代表这个killer生成的位置。
应当是 ~-2 ~127 ~-2与~2 ~-127 ~2
中的一个位置
- execute @e[type=ArmorStand,name=marker] ~ ~ ~ summon ArmorStand ~☆ ~127 ~☆ {Motion:[0.0d,-10.0d,0.0d],CustomName:killer★,Invisible:1b,Invulnerable:1b,Silent:1b,Small:1b,}
复制代码 [purple_dye]后接记分版命令,将刚刚召唤出的Killer们[purple_dye]
的score_chosen设置为1,方便后面的execute命令
然后接音效和粒子(略),然后接4TICK中继器延时
执行命令将marker移走以防阻碍玩家撸方块
- /scoreboard players set @e[type=ArmorStand,c=25,name=!marker] chosen 1
复制代码 4TICK延时
- tp @e[name=marker,type=ArmorStand] -22 59 -29
复制代码 [purple_dye]制作一组命令并用高频脉冲激活[purple_dye]
用于探测killer脚下踩的是不是树叶方块
或者摸头方块由于数据值的关系,
每一个数据值都要对应一个。
总共24个命令方块。外加几个
判断killer若踩到泥土啊草方块就自杀的命令(可略)
数据值使用-1后表示任意数据值,详情
参考wikiDamage部分。
然后接删于非门接删除场上killer命令。
即若所有exe指令都不执行后,删除场上Killers
- execute @e[score_chosen_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:log -1 setblock ~ ~-1 ~ minecraft:air 0 destroy
复制代码- execute @e[score_chosen_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:log2 -1 setblock ~ ~-1 ~ minecraft:air 0 destroy
复制代码- execute @e[score_chosen_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:leaves -1 setblock ~ ~-1 ~ minecraft:air 0 destroy
复制代码- execute @e[score_chosen_min=1] ~ ~ ~ detect ~ ~-1 ~ minecraft:leaves2 -1 setblock ~ ~-1 ~ minecraft:air 0 destroy
复制代码 接与非门
- kill @e[type=ArmorStand,name=!marker,score_chosen_min=1]
复制代码 [purple_dye]系统完成~[purple_dye]
|