User Tools

Site Tools


fr:tutoriel:biomes

Ajouter un biome [1.16.5]

Il y a 3 étapes nécessaires pour ajouter un biome au monde.

  • Création d'un biome
  • Enregistrement d'un biome
  • Ajout d'un biome à une zone climatique dans le monde

Dans ce tutoriel, nous ajouterons un nouveau biome appelé biome d'obsiland, dont la surface est recouverte d'obsidiennes.

Création d'un biome

Pour créer un biome, utilisez “Biome.Builder” et configurez les propriétés. Manquer une propriété entraînera probablement le crash du jeu. Il est recommandé de regarder les biomes de base(créés dans DefaultBiomeCreator) comme exemples.

public class ExampleMod implements ModInitializer {
  // SurfaceBuilder defines how the surface of your biome looks.
  // We use custom surface builder for our biome to cover surface with obsidians.
  private static final ConfiguredSurfaceBuilder<TernarySurfaceConfig> OBSIDIAN_SURFACE_BUILDER = SurfaceBuilder.DEFAULT
    .withConfig(new TernarySurfaceConfig(
      Blocks.OBSIDIAN.getDefaultState(),
      Blocks.DIRT.getDefaultState(),
      Blocks.GRAVEL.getDefaultState()));
 
  private static final Biome OBSILAND = createObsiland();
 
  private static Biome createObsiland() {
    // We specify what entities spawn and what features generate in the biome.
    // Aside from some structures, trees, rocks, plants and
    //   custom entities, these are mostly the same for each biome.
    // Vanilla configured features for biomes are defined in DefaultBiomeFeatures.
 
    SpawnSettings.Builder spawnSettings = new SpawnSettings.Builder();
    DefaultBiomeFeatures.addFarmAnimals(spawnSettings);
    DefaultBiomeFeatures.addMonsters(spawnSettings, 95, 5, 100);
 
    GenerationSettings.Builder generationSettings = new GenerationSettings.Builder();
    generationSettings.surfaceBuilder(OBSIDIAN_SURFACE_BUILDER);
    DefaultBiomeFeatures.addDefaultUndergroundStructures(generationSettings);
    DefaultBiomeFeatures.addLandCarvers(generationSettings);
    DefaultBiomeFeatures.addDefaultLakes(generationSettings);
    DefaultBiomeFeatures.addDungeons(generationSettings);
    DefaultBiomeFeatures.addMineables(generationSettings);
    DefaultBiomeFeatures.addDefaultOres(generationSettings);
    DefaultBiomeFeatures.addDefaultDisks(generationSettings);
    DefaultBiomeFeatures.addSprings(generationSettings);
    DefaultBiomeFeatures.addFrozenTopLayer(generationSettings);
 
    return (new Biome.Builder())
      .precipitation(Biome.Precipitation.RAIN)
      .category(Biome.Category.NONE)
      .depth(0.125F)
      .scale(0.05F)
      .temperature(0.8F)
      .downfall(0.4F)
      .effects((new BiomeEffects.Builder())
        .waterColor(0x3f76e4)
        .waterFogColor(0x050533)
        .fogColor(0xc0d8ff)
        .skyColor(0x77adff)
        .build())
      .spawnSettings(spawnSettings.build())
      .generationSettings(generationSettings.build())
      .build();
  }
}

Enregistrement des biomes

Nous enregistrerons notre biome au point d'entrée onInitialize . Si vous utilisez votre propre constructeur de surfaces, vous devrez également l'enregistrer.

public class ExampleMod implements ModInitializer {
  public static final RegistryKey<Biome> OBSILAND_KEY = RegistryKey.of(Registry.BIOME_KEY, new Identifier("tutorial", "obsiland"));
 
  @Override
  public void onInitialize() {
    Registry.register(BuiltinRegistries.CONFIGURED_SURFACE_BUILDER, new Identifier("tutorial", "obsidian"), OBSIDIAN_SURFACE_BUILDER);
    Registry.register(BuiltinRegistries.BIOME, OBSILAND_KEY.getValue(), OBSILAND);
  }
}

Vous devez également donner à votre biome une entrée de langue dans votre fichier en_us.json :

src/main/resources/assets/modid/lang/en_us.json
{
  "biome.tutorial.obsiland": "Obsiland"
}

Ajout d'un biome à une zone climatique dans le monde

Nous devons spécifier le climat auquel le biome est ajouté, le biome que nous ajoutons et le poids du biome (une valeur double). Le poids est une mesure de la chance que le biome a de se reproduire. Un poids plus élevé correspond à une probabilité plus élevée pour le biome d'apparaitre, proportionnellement aux poids des autres biomes. Vous devrez peut-être donner à votre biome un poids plus élevé pendant les tests afin de pouvoir trouver le biome plus facilement. Dans ce tutoriel, nous allons ajouter le biome personnalisé aux climats TEMPERATE et COOL à titre d'exemple.

public class ExampleMod implements ModInitializer {
  @Override
  public void onInitialize() {
    [...]
 
    OverworldBiomes.addContinentalBiome(OBSILAND_KEY, OverworldClimate.TEMPERATE, 2D);
    OverworldBiomes.addContinentalBiome(OBSILAND_KEY, OverworldClimate.COOL, 2D);
  }
}

Résultat

Félicitations! Votre biome devrait maintenant se générer dans le monde! Vous pouvez utiliser la commande ci-dessous pour trouver votre biome dans le monde.

/locatebiome tutorial:obsiland

fr/tutoriel/biomes.txt · Last modified: 2021/06/26 19:09 by 127.0.0.1