minecraft吧 关注:2,549,451贴子:31,872,152
  • 33回复贴,共1

【基岩版命令方块】 后来的玩家也有蛋!(杀龙检测)

只看楼主收藏回复

众所周知,一个世界是只有一个龙蛋的,只有首先到达末地并击杀末影龙的玩家才能获得这一稀世珍宝。
而自从末地被史蒂夫和亚历克斯们发现,抢夺龙蛋的战争就开始了。
无数的亚历克斯失败于这场战争,无数的史蒂夫回到了他们的重生点。
(&#@¥%......)← 此处省略一万字
因此,为了防止世界被破坏,为了保护世界的和平,贯彻爱与真实的邪恶,可爱又迷人的反......正派角色:
腐竹!
管理员!
我们是穿梭在服务器中的***!黑洞,黑色的龙蛋正等着我们!


IP属地:广东1楼2022-02-11 21:56回复
    流程设计
    根据杀龙过程中龙窝的状态,检测可以分为4个阶段:
    (1)平常的状态。这一步检测四个末影水晶,检测到了就进入下一阶段;

    图注:平平常常
    (2)传送门的水晶发出光束的过程。这一步的传送门方块是消失了的,过程可能会失败(打破水晶),不过无论成败都会使四个水晶消失,于是检测不到4个水晶就进入下一阶段

    图注:复活中...
    (3)一个用来判断有没有召唤成功的阶段。根据成功时传送门方块仍是消失的,失败时传送门方块会重新出现,可设计两个对龙窝表面的检测:
    检测空气,成功则回到阶段1;
    检测传送门方块,成功则进入下一阶段

    图注:阶段3中,召唤成功的龙窝。可以看到传送门方块是消失的
    (4)打龙阶段。龙被打死后传送门方块会重新出现,于是检测传送门方块,检测到了就进行屠龙成功的处理,并回到阶段1。


    IP属地:广东2楼2022-02-11 21:59
    回复
      二、方块实现
      1. 提示
      a. 装置设在龙窝地下,用tickingarea设置常加载;
      b. 连锁方块无说明均为始终开启、有条件;
      c. 循环方块的延迟均可以设为0以上,楼主试验时用的是20。
      2. 数据项说明
      a. 计分项
      Dragon
      cAmount:当前龙窝上处于召唤位置的水晶数量(crystal amount);
      stage:第二部分提到的,挑战龙的阶段。
      b. 标签
      dragon_killer:杀死龙的玩家会带上这个标签;
      egg_gived:已经获得过龙蛋的玩家会带上这个标签;
      3. 指令
      每段代表一个命令方块链,段与段间用空格分隔,链首的是循环方块,其后的是连锁方块。
      a. 水晶计数器
      在阶段1、2执行:scoreboard players test stage Dragon 1 2
      计数输出清零:scoreboard players set cAmount Dragon 0
      位置1:testfor @e[type=ender_crystal,x=0,y=61,z=-3,dx=0,dy=0,dz=0]
      位置2:testfor @e[type=ender_crystal,x=0,y=61,z=3,dx=0,dy=0,dz=0]
      位置3:testfor @e[type=ender_crystal,x=3,y=61,z=0,dx=0,dy=0,dz=0]
      位置4:testfor @e[type=ender_crystal,x=-3,y=61,z=0,dx=0,dy=0,dz=0]
      计数输出置4:scoreboard players set cAmount Dragon 4
      stage 1
      若水晶数量为4,进入下一阶段。连锁方块均为有条件的
      在阶段1执行:scoreboard players test stage Dragon 1 1
      接收计数器结果:scoreboard players test cAmount Dragon 4 4
      进入下一阶段:scoreboard players set stage Dragon 2
      stage 2
      水晶数量归零后,进入下一阶段。连锁方块均为有条件的
      在阶段2执行:scoreboard players test stage Dragon 2 2
      接收计数器结果:scoreboard players test cAmount Dragon 0 0
      进入下一阶段:scoreboard players set stage Dragon 3
      stage 3
      检测到传送门方块时,回阶段1,检测到空气时,进入下一阶段。连锁方块均为有条件的
      检测到传送门方块
      在阶段3执行:scoreboard players test stage Dragon 3 3
      检测传送门:testforblock 1 60 0 end_portal
      回到stage0:scoreboard players set stage Dragon 0
      检测到空气
      在阶段3执行:scoreboard players test stage Dragon 3 3
      检测空气:testforblock 1 60 0 air
      进入下一阶段:scoreboard players set stage Dragon 4
      stage 4
      检测到传送门方块时,将标签dragon_killer添加到处于末地的所有玩家,回到阶段0
      在阶段4执行:scoreboard players test stage Dragon 4 4
      检测传送门方块:testforblock 1 60 0 end_portal
      回到stage 1:scoreboard players set stage Dragon 1
      添加屠龙者标签:tag @a[rm=0] add dragon_killer
      (无条件)广播挑战结果:tellraw @a {"rawtext":[{"text":"末影龙被 "},{"selector":"@a[rm=0,tag=dragon_killer]"},{"text":" 击杀"}]}
      (无条件)显示屠龙信息:tellraw @a[tag=dragon_killer,rm=0] {"rawtext":[{"text":"你打败了末影龙!"}]}
      后续处理:
      给龙蛋:give @a[tag=dragon_killer,tag=!egg_gived] dragon_egg
      添加给了蛋的标签:tag @a[tag=dragon_killer] add egg_gived
      (无条件)删除屠龙者标签:tag @a[tag=dragon_killer] remove dragon_killer


      IP属地:广东3楼2022-02-11 21:59
      回复
        摆好的样子:


        IP属地:广东5楼2022-02-11 22:00
        回复
          三、后记
          在服务器中,这个装置经历了多次实战考验,进行过多次优化,才成为现在的较为稳定的版本。若以后还有新的改动,将在这里记录。


          IP属地:广东7楼2022-02-11 22:02
          回复
            第6楼被整个吞咯


            IP属地:四川来自Android客户端8楼2022-02-11 22:58
            收起回复
              其实不用命令方块也可以的minecraft Wiki有教程,单人多人都有


              IP属地:安徽来自Android客户端9楼2022-02-12 12:37
              收起回复
                Wiki原话:4.重复步骤2-3,直到返回传送门中没有剩余的传送门方块。
                5.在单人游戏中,重进存档。
                6.在多人游戏中,离开主岛(通过末地折跃门)后下线,并确保主岛上没有玩家。当您重新连接时,生命值栏应该是可见的,然后您可以传送回主岛,跳下虚空,通过末地传送门返回末地,或是者不破坏最后一个返回传送门。


                IP属地:安徽来自Android客户端10楼2022-02-12 12:40
                收起回复
                  给到末地的玩家tag,一回到主世界就give并移除tag锁定不就好了(ಡωಡ),仪式感什么的没那么重要,龙蛋拿到了就行()


                  IP属地:广东来自手机贴吧11楼2022-02-12 14:52
                  收起回复


                    IP属地:安徽来自Android客户端12楼2022-02-12 16:56
                    回复
                      一个行为包解决问题


                      IP属地:福建来自Android客户端13楼2022-02-12 17:33
                      收起回复
                        不是,你非门检测个龙不就行了


                        IP属地:湖北来自Android客户端14楼2022-02-13 01:58
                        收起回复
                          末影龙死亡升空时有没有nbt记录
                          就像插在地上的箭有inGround:1b一样
                          如果有就可以利用这一点了


                          IP属地:河南来自Android客户端15楼2022-02-13 12:16
                          回复


                            IP属地:陕西来自iPhone客户端17楼2022-02-27 15:55
                            收起回复