《我的世界》是一款十分好玩的沙盒游戏,目前中国版测试已经正式开启。今天小编就为大家带来玩家不笑君分享的放置触发类命令方块组件详细教程,感兴趣的玩家一起来看看吧。
教程:
放置触发类:即仍在地上,形成陷阱,玩家经过会有负面效果的道具
命令方块组件:并非官方意义上的组件,类似于ooc,做好了之后是.mcfunction文件,后续会讲到用function来激活;单纯想学命令方块的话可以无视function部分直接往后读。
PS大佬请无视,这是给有点cb基础的萌新看的;若有错误部分请指出,谢谢。
本贴全程以我的作品极限跑酷2中的红色半砖为例
由于极限跑酷2是在旧版本制作的,所以单纯是作为一个例子,以1.12版本重新做出同样的效果(使用function);如果拆解此地图可以发现这张地图设计十分混乱(那时候我比较垃圾XD),而且那时候是使用execdetect做的,十分糟糕。
①
创建.mcfunction文件单纯想学命令方块可跳过
先创建单人游戏世界,版本选择1.12,等待创建完毕,并至少运行一次此地图。
打开安装目录MCLauncherMCLDownloadGame网易国服mc账号MCGame地图名称.minecraftsaves地图名称datafunctions
先新建一个文件夹(作为命名空间,最好用纯英文或下划线),再在新建的文件夹下新建一个.mcfunction文件(文件名任意,最好用纯英文或下划线),那么函数名就是[命名空间]:[.mcfunction文件名],用记事本或notepad++打开.mcfunction文件。.mcfunction文件需要UTF-8无BOM编码,notepad++设置方法:
TIP详细function教程请参见MCBBS
②
写指令
写指令可以用第三方工具或直接在.mcfunction中书写(建议)。
本贴全程以我的作品极限跑酷2中的红色半砖为例
由于极限跑酷2是在旧版本制作的,所以单纯是作为一个例子,以1.12版本重新做出同样的效果(使用function);如果拆解此地图可以发现这张地图设计十分混乱(那时候我比较垃圾XD),而且那时候使用exedetect做的,十分糟糕。
最终效果预览图:
最终效果:
手持名为Red的木棒按Q扔出,等待一定时间后陷阱刷出。踩中刷出陷阱即死。
一切准备就绪......
直接将下方命令复制到.mcfunction文件内即可+命令解析:
#mcfunction文件标有井号为注释行,在游戏中不会运行。
scoreboardplayerstag@e[type=item]addstick{OnGround:1b,Item:{id:minecraft:stick,Count:1b,tag:{display:{Name:Red}}}}
#给在地面上的物品(ID是木棒,数量是1个,名为Red的)加上Tag:stick;方便以后直接用选择器选择掉落物状态的道具。
#如果有若干较多的陷阱,可以不选择用tag的方式,可以选择专门设置一个计分板项目(以下简称obj),给每种陷阱的掉落物专门设置一个分数。
entitydata@e[tag=stick]{PickupDelay:32767}
#这条指令按条件需要加入。作用是:给扔出去的,还未变成陷阱的掉落物加上不能捡起来的nbt。
execute@e[tag=stick]~~~playsoundminecraft:block.stone.fallvoice@a[r=5]~~~0.31.5
#这条指令按需要加入。作用是:给扔出去的,还未变成陷阱的掉落物,给周围半径5格以内的玩家声音提示。如果你想加一些粒子效果也可以,这里不作赘述。
scoreboardobjectivesaddstickTimedummy
#这条指令用作建立一个stickTime的obj,此obj用来给tag=stick的实体计算时间(timer)。
scoreboardplayersadd@e[tag=stick]stickTime1
#给tag=stick的实体在此obj上加1分数(若20s/gt,则obj有数值是20时代表过去了大概1s)。
execute@e[tag=stick,score_stickTime=40,score_stickTime_min=40]~~~summonarmor_stand~~-1.7~{DisabledSlots:2096896,Invisible:1b,NoGravity:1b,CustomName:stick,Tags:[stickMain],ArmorItems:[{},{},{},{id:minecraft:redstone_block,Count:1b}],Marker:1b}
#timer计算的时间有obj等于40(≈2s),就在这个实体y坐标下面1.7格(写模型的时候经常遇到这种坐标偏移问题,可以多试试几次数字,代进去看看合不合适)刷一个as模型名为stick,Tag:stickMain。
kill@e[tag=stick,score_stickTime=40,score_stickTime_min=40]
#刷好as模型别忘了把自己kill掉orz
#写到这里差不多基本框架已经写完了,还是比较简单的,接下来写其实更简单的核心内容。
execute@e[type=armor_stand,tag=stickMain]~~1.7~execute@a[dx=0,dy=0,dz=0]~~~kill@s
#从陷阱的角度去探测~~1.7~(这和刚扔出来的掉落物的位置是相对的)的位置有没有玩家,再kill@s;@s:执行实体。
如果能理解上方的讲解内容,说明你已经对此篇教程较为熟练了,可以尝试自己不看上述内容盲写,也可以以此类推,制作更高级的陷阱,例如:
③
运行.mcfunction
写好了function文件之后并保存,在function保存的对应地图中,输入/gamerulegameLoopFunction[function函数名],将会在每1gt执行.mcfunction内的指令。
TIP详细function教程请参见MCBBS
TheEnd
以上就是具体教程介绍,希望能对各位玩家有所帮助!