@‘SCAREX’:
Ton IDE n’affiche pas d’erreurs ?
Non aucune erreur, c’est ça qui me surprend le plus d’ailleurs
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 moi
et 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