UID548063性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2022-8-5最后登录1970-1-1
| 前言
今天带来一个很有意思的示例
生成一个空岛
树 ✓
土 ✓
矿物以及石头 ✓
准备
这是本期作品的包
MC函数实战 - 1 - 空岛生存.mcpack(81.81 KB, 下载次数: 13)
包内的code文件夹里存放了生成mcfunction的smcf源码
( SMCFJS是我的一个项目 是一个便于开发的JS框架 也是mcfunction的超集 后缀为smcf )
给你们生成了三个空岛 快说谢谢楼主
教程
创建manifest.json和functions文件夹
Manifest.jaon↓↓↓
- {
- "format_version": 2,
- "header": {
- "description": "介绍",
- "name": "生成空岛",
- "uuid": "51a9d87c-4e9f-4980-88c5-5ae3ce341c63",
- "version": [ 0, 0, 1 ],
- "min_engine_version": [ 1, 16, 40 ]
- },
- "modules": [
- {
- "description": "...",
- "type": "data",
- "uuid": "43fd031e-a32c-494c-8e3a-36076d810d15",
- "version": [0, 0, 1]
- }
- ]
- }
复制代码
在functions目录下创建sb1.mcfunction
注: SB是skyblock的缩写
要想制作空岛生成函数,我们得先弄明白这两个问题
1. 命令执行顺序
2. 相对坐标的使用
首先是命令执行的顺序 在mcfunction中 所有命令都是从上往下执行的
也就是说会先执行写在前面的指令
所谓相对坐标
即相对于命令执行者的坐标 格式一般为 ~数字
代码↓↓↓
- #填充~0 ~95 ~0到~5 ~95 ~5的所有方块为minecraft:grass
- fill ~0 ~95 ~0 ~5 ~95 ~5 minecraft:grass
- #填充~0 ~90 ~0到~5 ~94 ~5的所有方块为minecraft:stone
- fill ~0 ~90 ~0 ~5 ~94 ~5 minecraft:stone
- #生成minecraft:gold_ore在~2 ~93 ~0
- setblock ~2 ~93 ~0 minecraft:gold_ore
- #生成minecraft:iron_ore在~2 ~90 ~1
- setblock ~2 ~90 ~1 minecraft:iron_ore
- #生成minecraft:gold_ore在~2 ~93 ~1
- setblock ~2 ~93 ~1 minecraft:gold_ore
- #生成minecraft:gold_ore在~2 ~94 ~3
- setblock ~2 ~94 ~3 minecraft:gold_ore
- #生成minecraft:gold_ore在~0 ~93 ~0
- setblock ~0 ~93 ~0 minecraft:gold_ore
- #生成minecraft:iron_ore在~2 ~90 ~1
- setblock ~2 ~90 ~1 minecraft:iron_ore
- #生成minecraft:iron_ore在~1 ~90 ~3
- setblock ~1 ~90 ~3 minecraft:iron_ore
- #生成minecraft:gold_ore在~1 ~91 ~0
- setblock ~1 ~91 ~0 minecraft:gold_ore
- #生成minecraft:gold_ore在~1 ~90 ~2
- setblock ~1 ~90 ~2 minecraft:gold_ore
- #生成minecraft:gold_ore在~2 ~91 ~1
- setblock ~2 ~91 ~1 minecraft:gold_ore
- #生成minecraft:iron_ore在~0 ~91 ~2
- setblock ~0 ~91 ~2 minecraft:iron_ore
- #生成minecraft:coal_ore在~0 ~93 ~2
- setblock ~0 ~93 ~2 minecraft:coal_ore
- #生成minecraft:iron_ore在~1 ~93 ~2
- setblock ~1 ~93 ~2 minecraft:iron_ore
- #生成minecraft:gold_ore在~1 ~91 ~1
- setblock ~1 ~91 ~1 minecraft:gold_ore
- #生成minecraft:gold_ore在~2 ~90 ~0
- setblock ~2 ~90 ~0 minecraft:gold_ore
- #生成minecraft:coal_ore在~0 ~94 ~3
- setblock ~0 ~94 ~3 minecraft:coal_ore
- #生成minecraft:coal_ore在~3 ~92 ~1
- setblock ~3 ~92 ~1 minecraft:coal_ore
- #生成minecraft:gold_ore在~2 ~93 ~2
- setblock ~2 ~93 ~2 minecraft:gold_ore
- #生成minecraft:iron_ore在~0 ~94 ~2
- setblock ~0 ~94 ~2 minecraft:iron_ore
- #填充~1~99~1到~3~102~3的所有方块为minecraft:leaves
- fill ~1~99~1 ~3~102~3 minecraft:leaves
- #填充~2~96~2到~2~100~2的所有方块为minecraft:log
- fill ~2~96~2 ~2~100~2 minecraft:log
- #将玩家传送到~1 ~100 ~1
- tp ~1 ~100 ~1
复制代码
一些内容讲解
将空岛生成在相对目前y90以上是为了防止生成平地岛
最后再传送是因为执行顺序的原理
其他的都很好理解
对于矿物的随机分布 可能会让一些人头疼
我们可以借助代码来完成随机数的计算
生成0-5随机数
Python↓↓↓
- import random
- import math
- print(math.floor(random.random()*5))
复制代码
JS↓↓↓
- console.log(Math.floor(Math.random()*5))
复制代码
PHP↓↓↓
- $random = rand()%6;
- echo $random;
复制代码
然后逐个写入就行了
当然也可以联系我使用Smcf进行开发或者帮助我们开发smcfjs
扔个qq: 1983997053
废话有点多
然后等制作好了后进入游戏就可以使用
进行生成了
结语
很简单吧,mcfunction就是这么厉害
学好mcfunction就像学好材质包的ui一样重要 |
|