BlackCB.
本帖最后由 天狼星black 于 2017-10-4 13:24 编辑




   大家好,这里是BlackCB!!今天给大家带来的是全版本通用的原版指令实现连环砍树模组!


  


       近期论坛技巧版好像很长时间都没有让人眼前一亮的帖子,于是本初三狗丢掉试卷来鼓捣这么个东西,没想到前后竟花了一天的时间,其中失败三十一遍,炸图(所有指令都拆掉)两遍,真的让我十分无语,试了三十一种方法,竟只有一种是奏效的1.9的话实现这个比较容易,可是要兼容1.8的话,真的是没有连锁高频CB还有tag真是不容易!!在其中好像发现1.8的一些bug,也应该是已经被发现过的吧,像是tp指令中的目标实体(也就是以这个实体为目的地)如果是item的话会出错,还有的那些凭我的资质根本解释不出来,反正我快累死了,终于实现的时候,看着橡木突突突地掉下来,兴奋的跳起来       《——没办法,我就是那么多的废话。想当年军训偶遇一个CB玩家从11点一直聊到8点打铃



    好吧,现在开始正入主题!
   效果图:

   貌似不是很清楚,不过睁大眼睛看就会看到有一个木头掉了下来。
   所谓连环砍树,就是砍掉树根,整个树干就会变成掉落物品形式掉在地上,这对于生存建筑党十分友好,因为这大大节省了花在枯燥的砍树工作上的时间(大型橡树你懂的),而且其中的破坏的效果十分有效地阻止砍树的枯燥(什么鬼)。




     原理讲解  





   原理看上去好简单,可是想出并实现它,你的思路要十分明晰(像楼主这样的逗比就算了)

   在木头的掉落物形式(item)的上方放置Air,执行成功后在放置的Air处生成木头的掉落物形式,然后在放置Air……如此这般就实现了连环砍树的形式。

  

看到这里,有兴趣的同学可以试着看着原理而不看本帖后面试试看~~有了原理事情就会简单(然而我这个逗比还是失败了二十一次)







指令         

    示意图:




     

   


注意事项






    好了,一共是7个CB,注意中继器和比较器的区别,那个高频链接务必使用这个组合(比较器加一圈红石,并且比较器的红石线伸到至少要6格远),频率白色羊毛和黑色中间的那个是比较器,绿色到褐色之间分别是比较器一格延迟的中继器,褐色与蓝色中间的是一格延迟的中继器(重要)。装置的右手边的那一堆红石装置的中继器延时格数务必看清楚,否则会有各种各样的bug。


             我们先把它分成三个部分:








计分板部分



           

     先设置一个积分版。
              /scoreboard objectives add trees dummy
     生成一个计分板,名为trees,只能靠指令改变分值。




    红色羊毛 :  /scoreboard players set @e[type=Item] trees 1 {Item:{id:"minecraft:log"}}

           把木头的掉落物形式添加到计分板,分值为1.





    黑色羊毛:  /testfor @e[type=Item,score_trees=1]


                     检测分值为1的物品(也就是木头的掉落物形式,由于选择器不能检测item的id)




    白色羊毛:   execute @e[type=Item,score_trees=1] ~ ~ ~ /summon ArmorStand ~ ~ ~ {CustomName:"tree",NoGravity:1,Invisible:1}

                在木头的掉落物形式处生成一个名为tree(为了区分其他盔甲架)没重力看不到打不烂的盔甲架。

                                                        总体来说,就是在木头的掉落物形式生成盔甲架以方便后面的计算。











处理掉落物部分





    绿色(原谅)羊毛  execute @e[type=ArmorStand,name=tree] ~ ~ ~ detect ~ ~1 ~ minecraft:log 0 /setblock ~ ~1 ~ air
           
                 如果名为tree的盔甲架的头被卡在橡木上(0为橡木,1为圣诞木【云杉我喜欢这么叫】,2为桦木,3为从林木,可以自己改然后就能砍各种各样的树)然后把橡木清走。




    蓝色羊毛:     /tp @e[type=ArmorStand,name=tree] ~ ~1 ~


          把那个盔甲架tp上一格





    棕色羊毛:      /execute @e[type=ArmorStand,name=tree] ~ ~ ~ /summon Item ~ ~ ~ {Item:{id:"minecraft:log",Count:1}}

在盔甲架处生成一个木头的掉落物形式!


     总体来说,就是如果盔甲架上半身卡在木头上,就会延时后激活装置,生成掉落物并删除方块再把盔甲架tp上一一格,再进行判定,若结果为是,则继续进行下一轮的判定,若否,就输出到蓝色部分(清除盔甲架的部分)(感觉很像编程有木有)。这里要注意的是一定要区分好比较器和中继器,中继器一定要延时到一个,我上面已经给了大图,防止出现一楼这样的状况。





清除盔甲架部分






                 橙色:/kill @e[type=ArmorStand,name=tree]


                        
                      不用解释了吧……
   
      总体来说就是如果实行刚才的指令不成功就会输入信号,达到一定时间后才会激活指令方块(因为延时的原因,如果你不喜欢树被截成半截的话)我这里的时间已经是计算好了的,如果持续的时间小于这个值,指令方块就不会接受红石信号。





    好了,剩下的就靠你们去理解了,有些困难,但如果你理解到了,你便会有很大的成就感,这正是CB的意义价值乐趣所在!!!(楷体显示不出来,弄得好难看)
    好了有什么问题尽管在下面问,我是BlackCB,主张老版本指令方块与红石装置的有趣结合!!
    对了,这里是本人纯原创的,不允许任何网站转载,隶属于mcbbs,886!


给别人人气不会扣自己的~~~
                     




   
                    




eivll
我是1.11.2版的,除了红色羊毛那我是用的循环开启,其他都照着做没成功,砍树的时候确实砍1个掉2-3个,但就生成了2-3个看不见的盔甲架,也不会自动删除···得手动kill

Sssss...
本帖最后由 Sssss... 于 2017-10-4 10:49 编辑

不需要放置air然后生成掉落物
可以直接fill然后dertory
这样可以省去大量探测木头种类
2、1.11.2版本后实体名改变。

BlackCB.
eivll 发表于 2017-10-4 10:22
我是1.11.2版的,除了红色羊毛那我是用的循环开启,其他都照着做没成功,砍树的时候确实砍1个掉2-3个,但就 ...

可能新版本有不同吧。。。
我亲测就没这问题。。。

BlackCB.
eivll 发表于 2017-10-4 10:22
我是1.11.2版的,除了红色羊毛那我是用的循环开启,其他都照着做没成功,砍树的时候确实砍1个掉2-3个,但就 ...

en...你这个应该是比较器和中继器的问题
在检查检查
还有我已经把系统完善好了

pineapple_
仅适用于1.8,并不是什么全版本通用

你这……优化感人

雷鸣·翾鹗
其实吧这个以前也有人做过了,主要难点是识别树种,比如扭来扭曲的金合欢,以及识别是不是树,不然生存建筑党在挖木桩的时候整条桩都没了这就不是友好了,望楼主可以试着挑战一下

BlackCB.
雷鸣·翾鹗 发表于 2017-10-4 15:08
其实吧这个以前也有人做过了,主要难点是识别树种,比如扭来扭曲的金合欢,以及识别是不是树,不然生存建筑 ...

扭曲的树桩挺容易。。。
识别盔甲架的左/右/上/下/左上……

pca006132
雷鸣·翾鹗 发表于 2017-10-4 15:08
其实吧这个以前也有人做过了,主要难点是识别树种,比如扭来扭曲的金合欢,以及识别是不是树,不然生存建筑 ...

一般来说顺着检查上去看看有没有树叶大约就好
毕竟也没法很好的定义啥是“树”

冰蓝飞雪
lllllllllll

pineapple_
pca006132 发表于 2017-10-4 18:08
一般来说顺着检查上去看看有没有树叶大约就好
毕竟也没法很好的定义啥是“树” ...

233333造树屋的可就遭殃了

BlackCB.
各位大爷,,,看了贴子给个评分也好啊
好凄凉的好不好

sjx
如果我用这个那么我每次拆掉房子上的一个方块就要把整座房重建一遍

BlackCB.
sjx 发表于 2017-10-5 20:40
如果我用这个那么我每次拆掉房子上的一个方块就要把整座房重建一遍

符合物理嘛哈哈哈

神崎长闲
虽然没懂你写的指令,但我其他思路:我记得有个setblock的替换标签,setblock air放置替换掉那个坐标的方块,原本方块会以实体的方式掉落,然后你再做个检测,周围1距离的木头全setblock不就好了

BlackCB.
Kanzaki·神崎 发表于 2017-11-11 16:57
虽然没懂你写的指令,但我其他思路:我记得有个setblock的替换标签,setblock air放置替换掉那个坐标的方块 ...

你这样说是挺简单,我一开始就是这么想的(不然我费那么多功夫干嘛),理由如下:
1、execute 不能在1.8中探测掉落物ID,所以如果你要判定这个掉落物是橡木,必须要有计分板的介入~不然就会随便丢个土方块整棵树都不见了。。。
2、这个机械的原理是连锁反应,一个橡树掉落物被判定后,自动清除上面的橡树方块,生成掉落物,再清除上面的橡木……1.8的比较器(不知道后面版本的是不是)探测指令实施成功后,就一直激活着,也就是如果你不实施一次失败的指令,你就不能继续激活后面的CB……(这正是我讨厌1.8的唯一原因)而且由于掉落物是受重力影响的,所以如果实施这种思路,我实验过,把橡木掉落物tp得极限高最多只能弄3个……所以必须进行盔甲架tp的介入(坑不坑?)
听懂了吗?技巧版平均3小时1个回复……(冷死了),我想这个东西围着学校操场走了3圈……(没吃中饭)苦逼的我……

神崎长闲
天狼星black 发表于 2017-11-11 20:14
你这样说是挺简单,我一开始就是这么想的(不然我费那么多功夫干嘛),理由如下:
1、execute 不能在1.8 ...

666,楼主有没有兴趣来我们团队,QQ1690800500 顺便送你双11礼物

BlackCB.
Kanzaki·神崎 发表于 2017-11-11 23:05
666,楼主有没有兴趣来我们团队,QQ1690800500 顺便送你双11礼物

……我是TCP的,最近在鼓捣自己的地图,而且我是初三党……不过如果适合的话私聊吧
下面有我的一些坑,你可以看看:
http://www.mcbbs.net/thread-735013-1-1.html

123456789548548
666666666666666

ruhuasiyu
其实单纯把掉落物作为探测不太好,最好配合上破坏方块的统计,这样可以保证是砍树掉的木头而不是扔的木头
然后你这个连锁应该每个方向都要放盔甲架吧
不如这样循环,
循环在tag=a的盔甲架,周围放置tag=b的盔甲架
杀死tag=a盔甲架
杀死所在位置无木头/树叶的tag=b盔甲架
破坏tag=a处方块
tag=b修改为a

BlackCB.
ruhuasiyu 发表于 2017-11-18 13:01
其实单纯把掉落物作为探测不太好,最好配合上破坏方块的统计,这样可以保证是砍树掉的木头而不是扔的木头
...

em……1.8计分板有tag的么……
而且可以探测盔甲架旁边的方块?

ruhuasiyu
天狼星black 发表于 2017-11-18 13:36
em……1.8计分板有tag的么……
而且可以探测盔甲架旁边的方块?

不清楚……
不过那么老的版本没啥支持的必要了吧……

ruhuasiyu
  1. #scoreboard objectives add cpp_break_log stat.mineBlock.minecraft.log

  2. execute @a[score_cpp_break_log_min=1] ~ ~ ~ execute @e[type=item,r=5] ~ ~ ~ summon minecraft:armor_stand ~ ~1 ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe1"]}
  3. scoreboard players set @a cpp_break_log 0

  4. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ log -1 summon armor_stand ~ ~ ~1 {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  5. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ log -1 summon armor_stand ~ ~ ~-1 {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  6. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ log -1 summon armor_stand ~ ~1 ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  7. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ log -1 summon armor_stand ~1 ~ ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  8. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ log -1 summon armor_stand ~-1 ~ ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  9. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ log -1 setblock ~ ~ ~ air 0 destroy

  10. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ leaves -1 summon armor_stand ~ ~ ~1 {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  11. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ leaves -1 summon armor_stand ~ ~ ~-1 {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  12. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ leaves -1 summon armor_stand ~ ~1 ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  13. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ leaves -1 summon armor_stand ~1 ~ ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  14. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ leaves -1 summon armor_stand ~-1 ~ ~ {NoGravity:1b,Invisible:1b,Tags:["cpp_axe2"]}
  15. execute @e[tag=cpp_axe1] ~ ~ ~ detect ~ ~ ~ leaves -1 setblock ~ ~ ~ air 0 destroy
  16. kill @e[tag=cpp_axe1]
  17. entitydata @e[tag=cpp_axe2] {Tags:["cpp_axe1"]}
复制代码


弄了个function版本的

BlackCB.
ruhuasiyu 发表于 2017-11-18 14:43
弄了个function版本的

好像以前也有人弄过这样的……反正我这个是1.8的(别说我是水笔)

840196733mw
原理很简单,但是判断什么是树就非常非常蛋疼了。谁都不希望修房子用原木的时候放错一块,一砍就把自己屋子拆了一半。不知道快速砍树模组是怎么判断一棵树的。

BlackCB.
840196733mw 发表于 2018-3-27 17:59
原理很简单,但是判断什么是树就非常非常蛋疼了。谁都不希望修房子用原木的时候放错一块,一砍就把自己屋子 ...

然而你要用1.8老版本实践起来并非像想象中那样容易
前面我已经说过具体原因啦

不羁Φ流年
额呵呵

龙王缺德
楼主图炸了

m050131
天狼星black 发表于 2017-11-11 20:14
你这样说是挺简单,我一开始就是这么想的(不然我费那么多功夫干嘛),理由如下:
1、execute 不能在1.8 ...

呃……掉落物id其实可以用选择器name=item.itemxxxxx,type=item解决的……
对不起挖坟了

BlackCB.
m050131 发表于 2018-7-14 12:43
呃……掉落物id其实可以用选择器name=item.itemxxxxx,type=item解决的……
对不起挖坟了 ...

有意义的回帖不算挖坟(看版规)
1.8做不到这个操作

粘兽
万能的盔甲架

m050131
天狼星black 发表于 2018-7-14 12:53
有意义的回帖不算挖坟(看版规)
1.8做不到这个操作

,1.8不行……我还是凉拌吧

1373693792
谢谢谢谢谢谢楼主

第一页 上一页 下一页 最后一页