本文最后更新于 782 天前。
适用版本 | 1.16.5± |
平台 | Forge |
Mappings | snapshot_20210309 |
在Minecraft 1.16中更改了生物群系,导致以前1.15的矿物/结构生成无法在1.16使用。
我们先谈谈1.15下的结构生成:先在FMLCommonSetupEvent
事件中遍历注册的生物群系,再调用Biome
中的addFeature()
添加生成。
但是在1.16,事情就变得不同了。
在1.16中,生物群系在注册时就已经把矿物生成一类的写死了,你无法直接修改。这时候就体现Forge事件系统的强大了。Forge事件系统提供了一个叫BiomeLoadingEvent
的事件,我们可以通过监听这个事件,获取生物群系的BiomeGenerationSettings.Builder
(准确来说应该是继承于BiomeGenerationSettings.Builder
的BiomeGenerationSettingsBuilder
),然后调用withFeature()
添加。
withFeature()
有两个参数:decorationStage
和feature
。
decorationStage
:生成的结构类型,例如LAKES
(湖)、UNDERGROUND_ORES
(地下矿物)等。feature
:生成的结构。
decorationStage
倒没啥问题,但是feature
就有问题了,它需要注册才能使用。其实也不是多大的问题,就是Forge提供的注册方法仅针对Feature
,我们使用的是ConfiguredFeature
或是其它,因此需要使用原版的方法,即Registry.register()
注册。