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 revision
Previous revision
Next revisionBoth sides next revision
zh_cn:tutorial:ores [2021/09/23 00:12] – [在世界中添加矿石] solidblockzh_cn:tutorial:ores [2021/09/23 00:19] – [结论] solidblock
Line 7: Line 7:
  
 我们假设您此时已经创建了自己的矿石。本教程中,我们使用羊毛方块进行替换。你可以适时将羊毛改成你自己的矿石。 我们假设您此时已经创建了自己的矿石。本教程中,我们使用羊毛方块进行替换。你可以适时将羊毛改成你自己的矿石。
-==== 在群系中添加矿石 ====+==== 添加到主世界生物群系 ==== 
 +本段落将会在主世界生成矿石。
  
-首先,我们需要创建一种方法来处理生物群系检查其是否为有效生物群系然后添加矿石。 +我们需要创建一个 ConfiguredFeature确保在 ''onInitialize'' 中注册你的 ConfiguredFeature你可以自由地改变一些值以适应你的模组 
-<code java [enable_line_numbers="true"]+ 
-private void handleBiome(Biome biome) +<code java> 
- if(biome.getCategory() !Biome.Category.NETHER && biome.getCategory() != Biome.Category.THEEND) { +public class ExampleMod implements ModInitializer 
- biome.addFeature( +  private static ConfiguredFeature<?, ?> ORE_WOOL_OVERWORLD = Feature.ORE 
-            GenerationStep.Feature.UNDERGROUND_ORES, +    .configure(new OreFeatureConfig( 
-             Biome.configureFeature( +      OreFeatureConfig.Rules.BASE_STONE_OVERWORLD
-                Feature.ORE, +      Blocks.WHITE_WOOL.getDefaultState(), 
-        new OreFeatureConfig( +      9)) // Vein size 
-         OreFeatureConfig.Target.NATURAL_STONE+    .range(new RangeDecoratorConfig( 
-         Blocks.NETHER_QUARTZ_ORE.getDefaultState(), +      // You can also use one of the other height providers if you don't want a uniform distribution 
-                 8 //Ore vein size +      UniformHeightProvider.create(YOffset.aboveBottom(0)YOffset.fixed(64)))) // Inclusive min and max height 
-         ), +    .spreadHorizontally() 
-                Decorator.COUNT_RANGE, +    .repeat(20); // Number of veins per chunk 
-        new RangeDecoratorConfig( + 
-         8, //Number of veins per chunk +  @Override 
-         0, //Bottom Offset +  public void onInitialize(
-         0, //Min y level +    RegistryKey<ConfiguredFeature<?, ?>> oreWoolOverworld = RegistryKey.of(Registry.CONFIGURED_FEATURE_KEY, 
-         64 //Max y level +      new Identifier("tutorial", "ore_wool_overworld")); 
-         ))); +    Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, oreWoolOverworld.getValue(), ORE_WOOL_OVERWORLD); 
- }+    BiomeModifications.addFeature(BiomeSelectors.foundInOverworld(), GenerationStep.Feature.UNDERGROUND_ORES, oreWoolOverworld); 
 +  }
 } }
 </code> </code>
  
-此方法通过提供的生成设置将您的矿石添加到整个世界。 随意更改值适合您mod+=== 结果 === 
 +检查你世界生成结果时,记得要创建新世界。你应该看见羊毛在主世界生成了。你可使用下面命令移除周围的石头方块 
 +<code> 
 +/fill ~-8 0 ~-8 ~8 ~ ~8 minecraft:air replace minecraft:stone 
 +</code>
  
-==== 迭代生物群系注册表 ====+{{tutorial:ores.png?800}}
  
-来,我们需要处理已注册的所有生物群系以及将来要注册所有生物群(由其他模块添加)。 我们首先遍历当前注册表,然后注册一个侦听器,以供将来添加。+==== 添加到生物群系 ==== 
 +本段落会基于前面落添加矿石到下界生物群系
  
-<code java [enable_line_numbers="true"]> +在下界,需要替换的方块和主世界地不同,所以需要把 ''OreFeatureConfig.Rules.BASE_STONE_OVERWORLD'' 替换成 ''OreFeatureConfig.Rules.BASE_STONE_NETHER''
-@Override +
-public void onInitialize() { +
- //Loop over existing biomes +
- Registry.BIOME.forEach(this::handleBiome);+
  
- //Listen for other biomes being registered +<code java> 
- RegistryEntryAddedCallback.event(Registry.BIOME).register((iidentifier, biome-> handleBiome(biome));+public class ExampleMod implements ModInitializer { 
 +  private static ConfiguredFeature<?, ?> ORE_WOOL_NETHER = Feature.ORE 
 +    .configure(new OreFeatureConfig( 
 +      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); 
 + 
 +  @Override 
 +  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>
  
-{{https://i.imgur.com/UemsMaI.png|Quartz Ores}} 
  
  
zh_cn/tutorial/ores.txt · Last modified: 2023/12/18 01:03 by solidblock