zh_cn:tutorial:ores
This is an old revision of the document!
在世界中添加矿石
许多模组会添加自己的矿石,您需要找到一种方法以将其放置在现有生物群系中让玩家寻找。在本教程中,我们将研究将矿石添加到现有生物群系以及其他模组添加的生物群系。将矿石添加到生物群系需要2个步骤。
- 制作一个 ConfiguredFeature,定义你的矿石方块如何生成。
- 使用 Fabric API 中的 Biome Modification API以将地物添加到生物群系。
注意 Biome Modification API 仍是实验性的。如果 API 不起作用,考虑 mixin 版本。
我们假设您此时已经创建了自己的矿石。本教程中,我们使用羊毛方块进行替换。你可以适时将羊毛改成你自己的矿石。
在群系中添加矿石
首先,我们需要创建一种方法来处理生物群系,检查其是否为有效的生物群系,然后添加矿石。
private void handleBiome(Biome biome) { if(biome.getCategory() != Biome.Category.NETHER && biome.getCategory() != Biome.Category.THEEND) { biome.addFeature( GenerationStep.Feature.UNDERGROUND_ORES, Biome.configureFeature( Feature.ORE, new OreFeatureConfig( OreFeatureConfig.Target.NATURAL_STONE, Blocks.NETHER_QUARTZ_ORE.getDefaultState(), 8 //Ore vein size ), Decorator.COUNT_RANGE, new RangeDecoratorConfig( 8, //Number of veins per chunk 0, //Bottom Offset 0, //Min y level 64 //Max y level ))); } }
此方法通过提供的生成设置将您的矿石添加到整个世界。 随意更改值以适合您的mod。
迭代生物群系注册表
接下来,我们需要处理已注册的所有生物群系以及将来将要注册的所有生物群落(由其他模块添加)。 我们首先遍历当前注册表,然后注册一个侦听器,以供将来添加。
@Override public void onInitialize() { //Loop over existing biomes //Listen for other biomes being registered RegistryEntryAddedCallback.event(Registry.BIOME).register((i, identifier, biome) -> handleBiome(biome)); }
结论
zh_cn/tutorial/ores.1632355950.txt.gz · Last modified: 2021/09/23 00:12 by solidblock