花的世界生成 1.21 Fabric
本篇教程的视频:
本篇教程源代码
GitHub地址:TutorialMod-FlowerGen-1.21
介绍
前面一篇教程我们已经添加了花和盆栽花,那这篇教程我们将让花也生成在世界中
本篇教程我们就不去看源代码了,因为世界生成这个东西和前面讲树的世界生成类似,一个构造特征,一个放置特征
花的构造特征
构造特征和放置特征不像原版那样拆开来写的话,就直接写在我们之前的类这即可
和树一样,先来一个注册键
1 | public static final RegistryKey<ConfiguredFeature<?, ?>> SIMPLE_FLOWER_KEY = of("simple_flower"); |
而后我们在bootstrap
中注册
1 | ConfiguredFeatures.register(featureRegisterable, SIMPLE_FLOWER_KEY, Feature.FLOWER, new RandomPatchFeatureConfig(32,6,2, |
当然,这里使用的方法是和树不一样的
这里的RandomPatchFeatureConfig
是一个随机生成的配置,里面的参数分别是尝试生成次数
、特征的水平(xz)拓展
、特征的垂直(y)拓展
、指定生成的特征
,而指定生成的特征
里面是SimpleBlockFeatureConfig
,这个是一个简单方块的配置,用BlockStateProvider.of
来指定生成的方块
不过,你是否有一个疑惑,花
、草
这种不属于地物的小植物,为什么还要为其编写构造特征?
在此之前,先看看Wiki对于地物的解释
以及,我们可以在植被
这一栏中发现一个随机斑块 Random Patch
(眼熟吧?)
所以,这里的构造特征其实就是一个随机斑块
,相当于一个植物组团
,这一个团
是属于构造特征的,把这玩意放在世界中,就是花
、草
这种小植物的生成了
游戏已配置的随机斑块可以在Wiki上查看,这里就不一一列举了
花的放置特征
接下来我们来写放置特征
1 | public static final RegistryKey<PlacedFeature> SIMPLE_FLOWER_PLACED_KEY = of("simple_flower_placed"); |
首先是一个注册键,然后在bootstrap
中注册
1 | PlacedFeatures.register(featureRegisterable, SIMPLE_FLOWER_PLACED_KEY, registryEntryLookup.getOrThrow(ModConfiguredFeatures.SIMPLE_FLOWER_KEY), |
这里的放置特征都是一些修饰符,比如RarityFilterPlacementModifier
是一个稀有度过滤器,SquarePlacementModifier
是一个方形放置修饰符,PlacedFeatures.MOTION_BLOCKING_HEIGHTMAP
是一个高度图修饰符(也就是地形高度),BiomePlacementModifier
是一个生物群系修饰符
花的生成器
我们还需要一个生成器,这个生成器是用来生成花的
1 | public class ModFlowerGeneration { |
创建一个ModFlowerGeneration
类,然后在里面写一个generateFlowers
方法
这里我们还是选择PLAIN
和FOREST
生物群系,利用BiomeModifications.addFeature
方法
其他的参数和树的差不多,就不再赘述了
当然记得将这里的方法进行初始化
1 | ModFlowerGeneration.generateFlowers(); |
而后,我们就可以直接跑数据生成了(当然如果你是直接跳到这一篇教程的,我建议你先去看前两篇教程)
这里同样会生成两个json
文件,一个是构造特征,一个是放置特征
随后我们就可以启动游戏,还是建议新建存档,以免不生成