====== 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 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 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 '': { "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 {{tutorial:obsiland.png}}