minecraft吧 关注:2,538,180贴子:31,751,159
  • 6回复贴,共1

【命令方块教程】基岩版服务器能用上一些小功能

取消只看楼主收藏回复

服务器命令方块教程NO.3
这贴放些小工程


IP属地:广东1楼2021-12-17 13:59回复
    二楼目录


    IP属地:广东2楼2021-12-17 13:59
    收起回复
      三楼备用


      IP属地:广东3楼2021-12-17 14:00
      收起回复
        放卫星回帖达到100出动态命令方块领地教程


        IP属地:广东8楼2021-12-17 14:59
        回复
          【第一条】死亡检测
          基岩版是没有死亡次数计分项的,所以不能靠那个检测,而是利用@a可以选中死亡玩家,@e不能的特性来实现,做起来也是很容易的。话不多说,贴指令(为手机用户考虑,附加一张指令截图)
          【图片版指令】


          【文字版指令】
          1. 检测
          a:tag @a add death
          b:tag @e[type=player] remove death
          2. 复活前执行。在c及之后后进行操作,筛选标签使用 @a[tag=death, tag=!spawn]
          c:tell @a[tag=death, tag=!spawn] 你无了
          没有需要执行的操作时,c:testfor @a[tag=death, tag=!spawn]
          d:tag @a[tag=death] add spawn
          3. 复活后执行。在g前后增加操作,筛选标签使用 @e[type=player, tag=spawn]
          e:tell @e[type=player, tag=spawn] 你活了
          没有需要执行的操作时,e:testfor @e[type=player, tag=spawn]
          f:tag @e[type=player] remove spawn
          其中,全部方块均为始终活动,a、c、e为重复、无条件;b为连锁、无条件;d、f为连锁、有条


          IP属地:广东11楼2021-12-17 15:19
          回复
            【第二条】时钟
            简单的时钟只需要设置延迟增加计分项就可以了,过于简单不做介绍
            这里做一个用单变量显示时间的时钟,且有进位功能:
            首先明确需求:mc里一天20分钟,现实的平年有365天,以此为依据,得到 1年=365天, 1天=20分钟;
            令y=年、d=日、m=分钟,得到变量格式“ydddmm”。如“2021032117”代表“2021年321天17分”。
            接下来是指令部分:
            【图片版指令①】

            【图】以一个延迟1200的重复、无条件、始终活动命令方块开头,后面接的全是连锁、有条件、始终活

            【文字版指令①】
            0. 设置积分项和定值,在聊天框进行
            playTime_new:/scoreboard objectives add playTime_new dummy playtime(ydddmm)
            playTime_temp:/scoreboard objectives add playTime_temp dummy playTime_temp
            value_100:scoreboard players set value_100 playTime_temp 100
            value_100000:scoreboard players setvalue_100000 playTime_temp 100000
            1. 分 | 1200延迟
            a:scoreboardplayers add @璐村惂鐢ㄦ埛_00000eP馃惥 playTime_new 1
            2. 天进位 | 判断前2位是否大于等于20,是则进位
            b:scoreboard players operation @a playTime_temp = * playTime_new
            c:scoreboard players operation @a playTime_temp %= value_100playTime_temp
            d:scoreboard players add @a[scores={playTime_temp=20..}] playTime_new 80
            (注:d中,+80等效于+100,-20,作用是进位并清零分钟位)
            3. 年进位 | 判断前5位是否大于等于36500,是则进位
            e:scoreboard players operation @a playTime_temp = * playTime_new
            f:scoreboard players operation @a playTime_temp %= value_100000 playTime_temp
            g:scoreboard players add @a[scores={playTime_temp=36500..}] playTime_new 63500
            (注:g中,+63500等效于+100000,-36500,作用是进位并清零天位
            ======分割线======
            还可以在此基础上做一个世界计时,把@a改成一串字符,并调整一些细节即可。
            世界时间的流动条件是至少一名玩家在线。(上图最长的那个的就是世界计时)
            【图片版指令②】

            【图】以“world“显示的世界时间

            【文字版指令】
            1. 分 | 1200延迟
            a:testfor @a
            b:scoreboard players add world playTime_new 1
            2. 天进位 | 判断前2位是否大于等于20,是则进位
            c:scoreboard players operation world playTime_temp = worldplayTime_new
            d:scoreboard players operation world playTime_temp %= value_100playTime_temp
            e:scoreboard players test world playTime_temp 20 *
            f:scoreboard players add world playTime_new 80
            (注:f中,+80等效于+100,-20,作用是进位并清零分钟位)
            3. 年进位 | 判断前5位是否大于等于36500,是则进位
            g:scoreboard players operation world playTime_temp = worldplayTime_new
            h:scoreboard players operation world playTime_temp %= value_100000playTime_temp
            i:scoreboard players test world playTime_temp 36500 *
            j:scoreboard players add world playTime_new 63500
            (注:j中,+63500等效于+100000,-36500,作用是进位并清零天位)
            和玩家时钟一样,以一个延迟1200的重复、无条件、始终活动命令方块开头,
            后面接的全是连锁、有条件、始终活动


            IP属地:广东12楼2021-12-17 15:20
            收起回复
              明年继续


              IP属地:广东来自Android客户端14楼2021-12-24 23:55
              收起回复