明月庄主吧 关注:21,602贴子:240,650

【1.9】OneCommand,模组编写教程

只看楼主收藏回复

本帖首发于Racerftcraft吧,传送门:http://tieba.baidu.com/p/4054117211
目前版本15w38b,但是早在15w35a就可以实现该模式,预计最终正式版不会对此做出改动。
OK,正文开始!
首先,如果你连什么是OneCommand都不知道,我建议你去MCBBS搜一下……
简单来说,就是只通过一个命令方块,实现多指令同时、按顺序执行这一功能的东西
到了1.9,由于有了链式CB(就是绿色的那种CB)和自激活状态(即Always Active),因此即使在没有编译工具的情况下,编写OOC也成了一件非常简单的事情!!
下面,楼主就大致讲一下如何实现。
声明:此写法是楼主自己想出来的,如有雷同,纯属巧合,但,应该还没有吧……233333


IP属地:广西本楼含有高级字体1楼2015-09-20 13:12回复
    使用骑乘掉落沙的形式生成OOC,那么写在前面的指令应该是在最上面,如果按照传统的OOC激活方式,那么会是下面的比上面的优先激活,这就使得在编写OOC的时候必须把顺序反过来。
    到了1.9,由于指令放置的CB默认朝下的,因此只要使用链式CB,就可以实现从上往下执行,因此,在编写时,可以按执行顺序来编写,这样的一个好处就是直观明了;
    另一个好处就是,用本方法编写的OOC,不需要使用红石来激活,非常简单!
    如图:召唤的掉落沙应为最上面的橙色CB,由于需要触发下面的链式指令,所以该CB应当是自激活的,即Always Active,而控制该状态的NBT是auto:1
    然后执行指令的顺序是从上往下,即:红-橙-黄-绿;
    当然,白色羊毛旁边的橙色CB是用来放那条OOC指令的……


    IP属地:广西2楼2015-09-20 13:12
    回复
      为了方便起见,楼主把这种OOC拆分成3部分
      (1)/summon FallingSand ~ ~1 ~ {Time:1,Tile:137,TileEntityData:{auto:1,Command:},Riding:{}}
      (2)id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:},Riding:{}
      (3)id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:fill ~ ~-1 ~ ~ ~指令数 ~}
      如何编写呢?
      先讲(1),红色标记了三部分,一部分是落沙类型,ID 137为普通CB,也就是橙色那种,Command:后面填入你要执行的第一条指令,Riding:{}里面插入(2)
      (2)里面楼主也标记了三部分,第一是落沙类型,ID 211表示链式CB,就是绿色那种,Command:后面填指令,Riding:{}里面可以继续插入(2),重复这一过程直到你想要执行的指令都写完
      这时候你该考虑把这根柱子拆了吧?在这之前,你应该数一下你前面写了多少条指令,比如我写了5条,那么应该是第1条在(1)当中,后面4条都是(2)的部分,当然,是一层嵌套一层的。然后,你在最里面的一个Riding:{}里面插入(3),把“指令数”(上面红色标记的地方)改成你前面写了的指令的数量,比如我刚刚说的我写了5条,我就要填上5……
      这个指令就是连同存放OOC的CB、执行该指令的CB以及上面那堆执行你编写的指令的CB统统给抹掉。


      IP属地:广西本楼含有高级字体3楼2015-09-20 13:13
      收起回复
        附上一个实例:
        summon FallingSand ~ ~1 ~ {Time:1,Tile:137,TileEntityData:{auto:1,Command:/gamerule doDaylightCycle false},Riding:{id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:/gamerule doTileDrops false},Riding:{id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:/time set 6000},Riding:{id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:/tellraw @p {"text":"感谢您选择秋一™OOC模组","color":"gold","extra":[{"text":"\n请选择是否开启刷怪:","color":"white"},{"text":"[开启]","color":"green","clickEvent":{"action":"run_command","value":"/gamerule doMobSpawning true"}},{"text":"[关闭]","color":"dark_red","clickEvent":{"action":"run_command","value":"/gamerule doMobSpawning false"}}]}},Riding:{id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:/gamerule commandBlockOutput false},Riding:{id:FallingSand,Time:1,Tile:211,TileEntityData:{Command:fill ~ ~-1 ~ ~ ~5 ~ air}}}}}}}


        IP属地:广西4楼2015-09-20 13:14
        收起回复
          - fin -
          by Civi 【Racerftcraft】


          IP属地:广西5楼2015-09-20 13:14
          收起回复
            前排卖瓜子


            IP属地:浙江来自Android客户端6楼2015-09-20 13:23
            回复


              7楼2015-09-20 13:26
              回复
                前排


                IP属地:美国来自Android客户端8楼2015-09-20 13:47
                回复
                  插楼主


                  IP属地:天津9楼2015-09-20 14:05
                  回复
                    秋一赛高


                    IP属地:云南来自Android客户端10楼2015-09-20 14:33
                    收起回复
                      遵从召唤而来


                      IP属地:河北来自Android客户端11楼2015-09-20 14:46
                      收起回复
                        前排,大触贴必顶啊


                        13楼2015-09-20 15:52
                        回复
                          围观围观,大触好腻害0.0


                          IP属地:江苏来自Android客户端14楼2015-09-20 16:19
                          回复
                            前排围观


                            IP属地:广东来自iPhone客户端15楼2015-09-20 17:20
                            回复
                              前排


                              16楼2015-09-20 17:23
                              收起回复