开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] Mc 函数从入门到入坟 ( 7 - 实例: 生成空岛 )

 发表于 2024-1-20 20:35:18 来自手机|显示全部楼层|阅读模式 IP:河北省
前言
今天带来一个很有意思的示例
生成一个空岛
树 ✓
土 ✓
矿物以及石头 ✓

准备
这是本期作品的包
 MC函数实战 - 1 - 空岛生存.mcpack(81.81 KB, 下载次数: 13)
包内的code文件夹里存放了生成mcfunction的smcf源码
( SMCFJS是我的一个项目 是一个便于开发的JS框架 也是mcfunction的超集 后缀为smcf )
给你们生成了三个空岛 快说谢谢楼主

教程
创建manifest.json和functions文件夹
Manifest.jaon↓↓↓
  1. {
  2.     "format_version": 2,
  3.     "header": {
  4.         "description": "介绍",
  5.         "name": "生成空岛",
  6.         "uuid": "51a9d87c-4e9f-4980-88c5-5ae3ce341c63",
  7.         "version": [ 0, 0, 1 ],
  8.         "min_engine_version": [ 1, 16, 40 ]
  9.     },
  10.     "modules": [
  11.         {
  12.             "description": "...",
  13.             "type": "data",
  14.             "uuid": "43fd031e-a32c-494c-8e3a-36076d810d15",
  15.             "version": [0, 0, 1]
  16.         }
  17.     ]
  18. }
复制代码

在functions目录下创建sb1.mcfunction
注: SB是skyblock的缩写

要想制作空岛生成函数,我们得先弄明白这两个问题
1. 命令执行顺序
2. 相对坐标的使用

首先是命令执行的顺序 在mcfunction中 所有命令都是从上往下执行的
也就是说会先执行写在前面的指令

所谓相对坐标
即相对于命令执行者的坐标 格式一般为 ~数字

代码↓↓↓
  1. #填充~0 ~95 ~0到~5 ~95 ~5的所有方块为minecraft:grass
  2. fill ~0 ~95 ~0 ~5 ~95 ~5 minecraft:grass
  3. #填充~0 ~90 ~0到~5 ~94 ~5的所有方块为minecraft:stone
  4. fill ~0 ~90 ~0 ~5 ~94 ~5 minecraft:stone
  5. #生成minecraft:gold_ore在~2 ~93 ~0
  6. setblock ~2 ~93 ~0 minecraft:gold_ore
  7. #生成minecraft:iron_ore在~2 ~90 ~1
  8. setblock ~2 ~90 ~1 minecraft:iron_ore
  9. #生成minecraft:gold_ore在~2 ~93 ~1
  10. setblock ~2 ~93 ~1 minecraft:gold_ore
  11. #生成minecraft:gold_ore在~2 ~94 ~3
  12. setblock ~2 ~94 ~3 minecraft:gold_ore
  13. #生成minecraft:gold_ore在~0 ~93 ~0
  14. setblock ~0 ~93 ~0 minecraft:gold_ore
  15. #生成minecraft:iron_ore在~2 ~90 ~1
  16. setblock ~2 ~90 ~1 minecraft:iron_ore
  17. #生成minecraft:iron_ore在~1 ~90 ~3
  18. setblock ~1 ~90 ~3 minecraft:iron_ore
  19. #生成minecraft:gold_ore在~1 ~91 ~0
  20. setblock ~1 ~91 ~0 minecraft:gold_ore
  21. #生成minecraft:gold_ore在~1 ~90 ~2
  22. setblock ~1 ~90 ~2 minecraft:gold_ore
  23. #生成minecraft:gold_ore在~2 ~91 ~1
  24. setblock ~2 ~91 ~1 minecraft:gold_ore
  25. #生成minecraft:iron_ore在~0 ~91 ~2
  26. setblock ~0 ~91 ~2 minecraft:iron_ore
  27. #生成minecraft:coal_ore在~0 ~93 ~2
  28. setblock ~0 ~93 ~2 minecraft:coal_ore
  29. #生成minecraft:iron_ore在~1 ~93 ~2
  30. setblock ~1 ~93 ~2 minecraft:iron_ore
  31. #生成minecraft:gold_ore在~1 ~91 ~1
  32. setblock ~1 ~91 ~1 minecraft:gold_ore
  33. #生成minecraft:gold_ore在~2 ~90 ~0
  34. setblock ~2 ~90 ~0 minecraft:gold_ore
  35. #生成minecraft:coal_ore在~0 ~94 ~3
  36. setblock ~0 ~94 ~3 minecraft:coal_ore
  37. #生成minecraft:coal_ore在~3 ~92 ~1
  38. setblock ~3 ~92 ~1 minecraft:coal_ore
  39. #生成minecraft:gold_ore在~2 ~93 ~2
  40. setblock ~2 ~93 ~2 minecraft:gold_ore
  41. #生成minecraft:iron_ore在~0 ~94 ~2
  42. setblock ~0 ~94 ~2 minecraft:iron_ore
  43. #填充~1~99~1到~3~102~3的所有方块为minecraft:leaves
  44. fill ~1~99~1 ~3~102~3 minecraft:leaves
  45. #填充~2~96~2到~2~100~2的所有方块为minecraft:log
  46. fill ~2~96~2 ~2~100~2 minecraft:log
  47. #将玩家传送到~1 ~100 ~1
  48. tp ~1 ~100 ~1
复制代码


一些内容讲解
将空岛生成在相对目前y90以上是为了防止生成平地岛
最后再传送是因为执行顺序的原理
其他的都很好理解
Screenshot_2024-01-20-19-30-56-106_com.mojang.minecraftpf.jpg

对于矿物的随机分布 可能会让一些人头疼
我们可以借助代码来完成随机数的计算
生成0-5随机数
Python↓↓↓
  1. import random
  2. import math
  3. print(math.floor(random.random()*5))
复制代码

JS↓↓↓
  1. console.log(Math.floor(Math.random()*5))
复制代码

PHP↓↓↓
  1. $random = rand()%6;
  2. echo $random;
复制代码

然后逐个写入就行了
当然也可以联系我使用Smcf进行开发或者帮助我们开发smcfjs
扔个qq: 1983997053
废话有点多

然后等制作好了后进入游戏就可以使用
Screenshot_2024-01-20-19-30-34-702_com.mojang.minecraftpf.jpg
进行生成了

结语
很简单吧,mcfunction就是这么厉害
学好mcfunction就像学好材质包的ui一样重要
苦力怕论坛,感谢有您~
 发表于 2024-1-20 23:39:45|显示全部楼层 IP:广东省
其实在生成空岛的时候function可以靠structure来执行,不用一个个fill来堆,矿物随机分布有structure的完整度生成,这样的话就不会太臃肿
2#2024-1-20 23:39:45回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 楼主|  发表于 2024-1-20 23:44:56 来自手机|显示全部楼层 IP:河北省
小屿风er 发表于 2024-1-20 23:39
其实在生成空岛的时候function可以靠structure来执行,不用一个个fill来堆,矿物随机分布有structure的完整度 ...

那就不是纯mcfunction了
还有你头像是不是我女儿小希
3#2024-1-20 23:44:56回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-1-20 23:49:00|显示全部楼层 IP:广东省
我是李君子 发表于 2024-1-20 23:44
那就不是纯mcfunction了
还有你头像是不是我女儿小希

纯function那确实不能用其他的(

我这个方法挺适合那些喜欢偷懒的人食用((

(对啊,是我家希希(●'◡'●) )
4#2024-1-20 23:49:00回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

头像被屏蔽
 发表于 2024-1-21 17:28:23|显示全部楼层 IP:上海
我是李君子 发表于 2024-1-20 23:44
那就不是纯mcfunction了
还有你头像是不是我女儿小希

话说可以用一个生物走动的路径来生成随机数吗?
scoreboard很简单
5#2024-1-21 17:28:23回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 楼主|  发表于 2024-1-21 17:37:34 来自手机|显示全部楼层 IP:河北省
TYXH4244 发表于 2024-1-21 17:28
话说可以用一个生物走动的路径来生成随机数吗?
scoreboard很简单

嗯,可以
6#2024-1-21 17:37:34回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-28 09:42

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3