24 oct. 2013, 11:53

Dans ce tutoriel, nous allons apprendre à créer un biome simple.

Dans la classe principale

On commence par déclarer le biome:

public static BiomeGenBase tutorialBiome;

Puis, on ajoute dans la partie Init:

tutorialBiome = new biomeTutorial(40).setBiomeName("Biome Tutorial").setDisableRain().setTemperatureRainfall(1.2F, 0.9F).setEnableSnow().setMinMaxHeight(0.3F, 0.5F);
  • 40: Correspond à l’id du biome.
  • setBiomeName: Correspond au nom du biome.
  • setDisableRain: Désactive la pluie.
  • setTemperatureRainfall: Correspond à la température du biome.
  • setMinMaxHeight: Définie à la hauteur du biome.
  • setEnableSnow: Active la neige.

Et on enregistre le biome:

GameRegistry.addBiome(tutorialBiome);

La classe du biome

Faites un extends BiomeGenBase et ajouter le constructeur:

public biomeTutorial(int par1) {
    super(par1);
}

Pour ajouter le spawn d’un mob, ajoutez dans le constructeur:

this.spawnableCreatureList.add(new SpawnListEntry(EntityCreatureTutorial.class, 10, 3, 6)));
this.spawnableMonsterList.add(new SpawnListEntry(EntityMonsterTutorial.class, 10, 3, 6));
this.spawnableWaterCreatureList.add(new SpawnListEntry(EntityWaterTutorial.class, 10, 3, 6));
this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityCaveTutorial.class, 10, 3, 6))
  • spawnableMonsterList: Si utilisé, le mob n’apparaîtra que la nuit.

  • spawnableWaterCreatureList: Si utilisé, le mob n’apparaîtra que dans l’eau.

  • spawnableCreatureList: Si utilisé, le mob apparaîtra à la manière d’une créature(loups, cochons, etc).

  • spawnableCaveCreatureList: Si utilisé, le mob n’apparaîtra que dans les grottes.

  • 10: Correspond à la chance d’apparition du mob

  • 3: Le nombre minimum par groupe.

  • 6: Le nombre maximum par groupe.

Pour définir le bloc du haut, ajoutez dans le constructeur:

this.topBlock = (byte)Block.blockRedstone.blockID;

Pour définir le bloc situé en dessous du bloc du haut, ajoutez dans le constructeur:

this.fillerBlock = (byte)Block.blockRedstone.blockID;

Important: L’id du bloc doit être inférieur à 256.

Pour ajouter des arbres dans votre biome, ajoutez dans le constructeur:

this.theBiomeDecorator.treesPerChunk = 10;
  • 10: Cela correspond au nombre d’arbres par chunk.

Ensuite ajoutez cette fonction en dessous du constructeur:

public WorldGenerator getRandomWorldGenForTrees(Random par1Random)
{
    return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenTrees(false, 4, 2, 2, false) : (par1Random.nextInt(10) == 0 ? this.worldGeneratorBigTree : new WorldGenTrees(false, 4, 0, 0, false)));
}

Donc si par1Random.nextInt(5) a pour valeur 0, alors cela fera apparaître des bouleaux, qui correspond au
new WorldGenTrees(false, 4, 2, 2, false), sinon si par1Random.nextInt(10) a pour valeur 0, alors cela fera apparaître des arbres géants, qui correspond au this.worldGeneratorBigTree, sinon cela fera apparaître des chênes.

Plus la valeur affichée entre parenthèses, dans par1Random.nextInt(5), est basse, plus les chances d’apparitions de l’arbre augmentent.

WorldGenTrees(false, 4, 0, 0, false): Laissez le false tel quel, le 4 correspond à la hauteur minimum de l’arbre, le 0, à la metadata du bois, le second 0, à la metadata des feuilles, et le second false, si oui ou non les lianes sont activés.

Pour faire apparaître des arbustes morts, ajoutez dans le constructeur:

this.theBiomeDecorator.deadBushPerChunk = 2;
  • 2: Cela correspond au nombre d’arbustes morts par chunk.

Pour ajouter de la canne à sucre, ajoutez dans le constructeur:

this.theBiomeDecorator.reedsPerChunk = 50;
  • 50: Correspond au nombre de cannes à sucres dans le chunk, mais pour que la canne à sucre apparaisse, il faut de l’eau à côté.

Pour ajouter des cactus, ajoutez dans le constructeur

this.theBiomeDecorator.cactiPerChunk = 10;
  • 10: Correspond au nombre de cactus par chunk.

Pour rajouter des champignons géants, ajoutez dans le constructeur:

this.theBiomeDecorator.bigMushroomsPerChunk = 1;
  • 1: Correspond au nombre de champignons géants par chunk.

Pour rajouter des champignons, ajoutez dans le constructeur:

this.theBiomeDecorator.mushroomsPerChunk = 1;
  • 1: Correspond au nombre de champignons par chunk.

Pour activer ou non la génération des lacs, ajoutez dans le constructeur:

this.theBiomeDecorator.generateLakes = true;

Les lacs sont activés par défauts.

Pour changer la couleur de l’eau, ajoutez dans le constructeur:

this.waterColorMultiplier = 0xFF0022;

Pour rajouter de l’herbe, ajoutez dans votre constructeur:

this.grassPerChunk = 1;
  • 1 : Correspond au nombre d’herbes par chunk.

Pour rajouter de l’argile, ajouter dans votre constructeur:

this.theBiomeDecorator.clayPerChunk = 5;
  • 5: Correspond au nombre d’argiles par chunk.

Pour changer la couleur de l’herbe, ajoutez cette fonction:

public int getBiomeGrassColor()
{
    return 0xFF0C00;
}

Pour ajouter une structure, ajouter cette fonction:

public void decorate(World par1World, Random par2Random, int par3, int par4)
{
    super.decorate(par1World, par2Random, par3, par4);
    if(par2Random.nextInt(1000) == 0)
    {
        int k = par3 + par2Random.nextInt(16) + 8;
        int l = par4 + par2Random.nextInt(16) + 10;
        WorldGenTutorial worldgentutorial = new WorldGenTutorial();
        worldgentutorial.generate(par1World, par2Random, k, par1World.getHeightValue(k, l) + 1, l);
    }
}
  • par2Random.nextInt(1000) == 0 : Correspond au pourcentage de chance que la structure apparaisse.

  • par1World.getHeightValue(k, l) + 1 : Correspond à la hauteur de la structure.

  • k : Correspond à la largeur de la structure.

  • l : Correspond à la longueur de la structure

Rendu final