Créer un biome simple
-
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
-
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));
Ces lignes s’appliquent uniquement aux mobs vanilla ou pas?
-
@‘Superloup10’:
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));
Ces lignes s’appliquent uniquement aux mobs vanilla ou pas?
Non, ces codes s’appliquent aussi pour les mobs que tu as créé.
-
On peut avoir un rendu final du tutoriel, histoire de bien voir le code en entier, sinon super tutoriel
-
Pas assez détaillé à mon gout, il a plein de fonction dans BiomeGenBase qui peuvent être remit dans la classe de ton biome et modifier pour customiser un peu plus le biome, qui devrait être détaillé.
Comme par exemple le nombre d’arbre, herbe et autre par chunk, les fonctions pour le générateur d’arbre, etc … -
Je viens de me rendre compte qu’entre le moment où j’ai refusé le tutoriel (le 03-11-2013) et aujourd’hui que tu as modifié le tutoriel (je pense que le poste n’avait pas été locké à ce moment).
Je vais jeter un coup d’œil à ce que tu as fait quand j’aurai le temps, car au première vu il est bien plus détaillé.
-
Peut-on déterminer la rareté du biome, car j’ai rapidement survolé les classes de Minecraft et n’ai pas trouvé… Merci
-
comment faire en sorte que notre biome ne se génère pas automatiquement?
-
C’est-à-dire?
-
bha j’ai créer un biome et je ne veux pas qu’il se génère sur la map (le veux juste le rendre dispo via une commande, comme le plugin BioMan)
-
Tu enlève le GameRegistry.registerBiome
-
Cela va permettre de l’utiliser par commande mais pas qu’il se génère?
-
Sans l’enregistrement il ne se généra pas. Par contre je vois pas comment l’activer par commande.
-
Tu mets une condition avec une variable boolean setté par ta commande. Mais c’est pas sur qu’il se génère.
-
Bha le plugin bioman de richie permet de changer le biome mais faut trouver comment faire pour les biome modder