Mc 函数从入门到入坟 ( 7 - 实例: 生成空岛 )
前言今天带来一个很有意思的示例
生成一个空岛
树 ✓
土 ✓
矿物以及石头 ✓
准备
这是本期作品的包
包内的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":
}
]
}
在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一样重要[贴吧_勉强] 其实在生成空岛的时候function可以靠structure来执行,不用一个个fill来堆,矿物随机分布有structure的完整度生成,这样的话就不会太臃肿 小屿风er 发表于 2024-1-20 23:39
其实在生成空岛的时候function可以靠structure来执行,不用一个个fill来堆,矿物随机分布有structure的完整度 ...
那就不是纯mcfunction了[贴吧_吐舌]
还有你头像是不是我女儿小希 我是李君子 发表于 2024-1-20 23:44
那就不是纯mcfunction了
还有你头像是不是我女儿小希
纯function那确实不能用其他的(
我这个方法挺适合那些喜欢偷懒的人食用((
(对啊,是我家希希(●'◡'●) )
我是李君子 发表于 2024-1-20 23:44
那就不是纯mcfunction了
还有你头像是不是我女儿小希
话说可以用一个生物走动的路径来生成随机数吗?
scoreboard很简单
TYXH4244 发表于 2024-1-21 17:28
话说可以用一个生物走动的路径来生成随机数吗?
scoreboard很简单
嗯,可以
页: [1]