User Tools

Site Tools


zh_cn:tutorial:ores

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
zh_cn:tutorial:ores [2021/09/23 00:15] – [在群系中添加矿石] solidblockzh_cn:tutorial:ores [2021/09/23 00:19] – [迭代生物群系注册表] solidblock
Line 43: Line 43:
 {{tutorial:ores.png?800}} {{tutorial:ores.png?800}}
  
-==== 迭代生物群系注册表 ====+==== 添加到下界生物群系 ==== 
 +本段落将会基于前面的段落添加矿石到下界生物群系。
  
-我们需要处理已注册的所有生物群系及将来将注册的所有生物群落(由其他模块添加)。 我们首先遍历当前注册表,然后注册一个侦听器,以供将来添加+,需要替换方块和主世界地不同,所以把 ''OreFeatureConfig.Rules.BASE_STONE_OVERWORLD'' 替换成 ''OreFeatureConfig.Rules.BASE_STONE_NETHER''
  
-<code java [enable_line_numbers="true"]> +<code java> 
-@Override +public class ExampleMod implements ModInitializer 
-public void onInitialize() +  private static ConfiguredFeature<?, ?> ORE_WOOL_NETHER = Feature.ORE 
- //Loop over existing biomes +    .configure(new OreFeatureConfig( 
- Registry.BIOME.forEach(this::handleBiome);+      OreFeatureConfig.Rules.BASE_STONE_NETHER, // 对于下界,我们使用 OreFeatureConfig.Rules.BASE_STONE_NETHER 
 +      Blocks.WHITE_WOOL.getDefaultState(), 
 +      9)) 
 +    .range(new RangeDecoratorConfig( 
 +      UniformHeightProvider.create(YOffset.fixed(0), YOffset.fixed(64)))) 
 +    .spreadHorizontally() 
 +    .repeat(20);
  
- //Listen for other biomes being registered +  @Override 
- RegistryEntryAddedCallback.event(Registry.BIOME).register((i, identifierbiome-> handleBiome(biome));+  public void onInitialize() { 
 +    RegistryKey<ConfiguredFeature<?, ?>> oreWoolNether = RegistryKey.of(Registry.CONFIGURED_FEATURE_WORLDGEN, 
 +        new Identifier("tutorial", "ore_wool_nether")); 
 +    Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, oreWoolNether.getValue()ORE_WOOL_NETHER)
 +    BiomeModifications.addFeature(BiomeSelectors.foundInTheNether(), GenerationStep.Feature.UNDERGROUND_ORES, oreWoolNether); 
 +  }
 } }
 </code> </code>
 +
 +==== 添加到末地生物群系 ====
 +本段落将会基于主世界的代码添加矿石到末地生物群系。
 +
 +在末地,基础方块是末地石,所以需要把 ''OreFeatureConfig.Rules.BASE_STONE_OVERWORLD'' 替换成 ''new BlockMatchRuleTest(Blocks.END_STONE)''
 +
 +<code java>
 +public class ExampleMod implements ModInitializer {
 +  private static ConfiguredFeature<?, ?> ORE_WOOL_END = Feature.ORE
 +    .configure(new OreFeatureConfig(
 +      new BlockMatchRuleTest(Blocks.END_STONE), // 在末地生物群系,基础方块是末地石
 +      Blocks.WHITE_WOOL.getDefaultState(),
 +      9))
 +    .range(new RangeDecoratorConfig(
 +      UniformHeightProvider.create(YOffset.fixed(0), YOffset.fixed(64))))
 +    .spreadHorizontally()
 +    .repeat(20);
 +
 +  @Override
 +  public void onInitialize() {
 +    RegistryKey<ConfiguredFeature<?, ?>> oreWoolEnd = RegistryKey.of(Registry.CONFIGURED_FEATURE_KEY,
 +        new Identifier("tutorial", "ore_wool_end"));
 +    Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, oreWoolEnd.getValue(), ORE_WOOL_END);
 +    BiomeModifications.addFeature(BiomeSelectors.foundInTheEnd(), GenerationStep.Feature.UNDERGROUND_ORES, oreWoolEnd);
 +  }
 +}
 +</code>
 +
  
 ==== 结论 ==== ==== 结论 ====
zh_cn/tutorial/ores.txt · Last modified: 2024/05/21 10:00 by sjk1949