Résolu Problème Génération
-
Bonjour,
Je suis en train de mettre mon mod à jour de la 1.8.9 vers la 1.9, la seul vrai difficulté que j’ai est celle de la class qui gère la génération. Je n’arrive pas à trouver l’erreur, malgres un poste sur le forum officiel de Forge une personne a pu me guider mais sans succès.
Je vous donne les 2 class qui gère la génération:
package fr.jules552.mod.WorldGeneration; import java.util.Random; import fr.jules552.mod.Structures.Structure1; import fr.jules552.mod.init.BlocksMod; import net.minecraft.block.Block; import net.minecraft.block.BlockDirt; import net.minecraft.block.BlockStone; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import net.minecraftforge.fml.common.IWorldGenerator; public class WorldGenAd implements IWorldGenerator { public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.getDimension()) { case -1: GenerateNether(world, chunkX * 16, chunkZ * 16, random); break; case 0: GenerateOverworld(world, chunkX * 16, chunkZ * 16, random); break; case 1: GenerateEnd(world, chunkX * 16, chunkZ * 16, random); } } private void addOre(Block block, Block blockSpawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minV, int maxV, int spawnChance) { for(int i = 0; i < spawnChance; i++) { int defaultChunkSize = 16; int Xpos = posX + random.nextInt(defaultChunkSize); int Ypos = minY + random.nextInt(maxY - minY); int Zpos = posZ + random.nextInt(defaultChunkSize); IBlockState state = block.getDefaultState(); BlockPos blockPos = new BlockPos(Xpos, Ypos, Zpos); new WorldGenMinable(state, maxV).generate(world, random, blockPos); } } private void GenerateNether(World world, int i, int j, Random random) { } private void GenerateOverworld(World world, int i, int j, Random random) { // Minerais addOre(BlocksMod.AdamantiumOre, Blocks.stone, random, world, i, j, 4, 16, 1, 3, 10); addOre(BlocksMod.SilverOre, Blocks.stone, random, world, i, j, 4, 48, 3, 4, 18); addOre(BlocksMod.AluminiumOre, Blocks.stone, random, world, i, j, 4, 48, 3, 6, 18); // Structures int Xpos = i + random.nextInt(16); int Ypos = random.nextInt(128); int Zpos = j + random.nextInt(16); for(int x = 0; x < 500; x++) { new Structure1().genrate(world, random, new BlockPos(Xpos, Ypos, Zpos)); } } private void GenerateEnd(World world, int i, int j, Random random) { } @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { } }
et la deuxième
package fr.jules552.mod.WorldGeneration; import net.minecraftforge.fml.common.IWorldGenerator; import net.minecraftforge.fml.common.registry.GameRegistry; public class WorldRegisterAd { public static void MainRegistry() { regsiterWorldGen(new WorldGenAd(), -1); regsiterWorldGen(new WorldGenAd(), 0); regsiterWorldGen(new WorldGenAd(), 1); } private static void regsiterWorldGen(IWorldGenerator iGenerator, int weightProbability) { GameRegistry.registerWorldGenerator(iGenerator, weightProbability); } }
En espérant que vous puissiez m’aider à régler ce problème, je précise que je ne suis qu’un simple amateur, donc une petit indication sur les choses à faire avec une explication serait grandement acceptée ^^
Merci d’avance -
1- Mauvaise section
2- Mets ton code dans des balises java
3- Tu as quoi comme erreur dans ton IDE ? -
Bonsoir, excuse moi pour l’erreur de Topic, ça prouve bien que je ne suis pas très doué ^^,
je vois le code dans les balises java moiet voici les messages dans mon IDE mit sur un pastebin
Je te remercie de ta réponse très rapide
-
Effectivement, la coloration syntaxique ne marche pas apparemment, désolé.
Ce que tu as envoyé ce sont les logs, or il n’y a aucune erreur, en revanche ton ordinateur n’a pas l’air d’arriver à suivre
-
@‘SCAREX’:
Effectivement, la coloration syntaxique ne marche pas apparemment, désolé.
Ce que tu as envoyé ce sont les logs, or il n’y a aucune erreur, en revanche ton ordinateur n’a pas l’air d’arriver à suivre
Effectivement il possède quelque ralentissement mais ça ne change rien à la génération, il possédait les mêmes quand le mod était en 1.8.9 et la génération allait très bien ^^ (les ralentissements sont dû à des problèmes de drivers graphiques, petite précision inutile )
-
Ton IDE n’affiche pas d’erreurs ?
-
@‘SCAREX’:
Ton IDE n’affiche pas d’erreurs ?
Non aucune erreur, c’est ça qui me surprend le plus d’ailleurs
-
Rajoute un System.out.println(“quelque chose”) quand tu génères un minerai
-
@‘SCAREX’:
Rajoute un System.out.println(“quelque chose”) quand tu génères un minerai
je le met ou le prinln ? (oui je suis assez doué pour ne pas savoir où se charge le minerai, c’est ça de suivre des tutos ^^ )
-
Après ça : new WorldGenMinable(state, maxV).generate(world, random, blockPos);
-
@‘SCAREX’:
Après ça : new WorldGenMinable(state, maxV).generate(world, random, blockPos);
Bon d’après ce que j’ai pu voir il n’y a aucun message, donc la génération n’est pas pris en compte, tient voilà la log si tu veux jeter un œil
-
regsiterWorldGen(new WorldGenAd(), -1);
regsiterWorldGen(new WorldGenAd(), 0);
regsiterWorldGen(new WorldGenAd(), 1);
-> inutile.
Un seul suffit.
Le dernier nombre n’est pas l’id de génération mais un poids.Vérifies que ta fonction MainRegistry est bien appelé.
(balise java corrigé + discussion déplacé dans la bonne section).
-
@‘robin4002’:
regsiterWorldGen(new WorldGenAd(), -1);
regsiterWorldGen(new WorldGenAd(), 0);
regsiterWorldGen(new WorldGenAd(), 1);
-> inutile.
Un seul suffit.
Le dernier nombre n’est pas l’id de génération mais un poids.Vérifies que ta fonction MainRegistry est bien appelé.
(balise java corrigé + discussion déplacé dans la bonne section).
Merci pour le déplacement de topic ^^
Donc j’ai retiré les 2 regsiter superflus et ma fonction MainRegistry est belle est bien appelée
-
Où ça ? Quelle méthode, quelle classe ?
-
@‘Plaigon’:
Où ça ? Quelle méthode, quelle classe ?
Voilà la classe :
package fr.jules552.mod; import fr.jules552.mod.WorldGeneration.WorldRegisterAd; import fr.jules552.mod.init.BlocksMod; import fr.jules552.mod.init.ItemsMod; import fr.jules552.mod.init.Structures.StructureAdamantium; import fr.jules552.mod.proxy.CommonProxy; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.MOD_VERSION) public class Adamantium { @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.SERVER_PROXY_CLASS) public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { ItemsMod.init(); ItemsMod.register(); BlocksMod.init(); BlocksMod.register(); WorldRegisterAd.MainRegistry(); StructureAdamantium.init(); } @EventHandler public void init(FMLInitializationEvent event) { proxy.registerRenders(); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } }
-
Personne n’a d’idée pour résoudre ce problème assez gênant ? ;(
-
Tu as essayé d’augmenter la probabilité ?
-
@‘SCAREX’:
Tu as essayé d’augmenter la probabilité ?
Non toujours pas , j’ai augmenter le spawnchance à 1000 mais ça donne rien
-
Ajoutes des print un peu partout dans ta classe WorldGenAd, affiches les valeurs des variables, etc …
C’est pas compliqué de déboguer du code.
-
@‘robin4002’:
Ajoutes des print un peu partout dans ta classe WorldGenAd, affiches les valeurs des variables, etc …
C’est pas compliqué de déboguer du code.
C’est bon j’ai résolu mon problème, j’ai pris une méthode assez radical c’est à dire refaire toute la classe qui gère la génération des minerais, en changeant un peu la méthode de génération.
Merci à tous de votre aide quand même