Problème Générations Minerais Thermos/Bungeecord



  • Bonsoir,

    J'ai un problème depuis 2 semaines après avoir rechercher ici et sur Google je n'es pas trouvé la réponse à mon problème ! Mon problème est que sur mon serveur sous Thermos 1.7.10 (Bungeecord 3 serveurs dont 1 hub et 2 PvPFac) Mon moddeur a créer un mod pour mon serveur, un mod des plus simples juste des armures épées pioches etc… Mais le problème concernent surtout la générations des minerais sa ne marche malheureusement pas sur mes mondes que je créer grâce à Multiverse-Core je ne trouve malheureusement aucun minerais du mod je lui avais dit de supprimer switch(world.provider.dimensionId) pour essayé mais le problème persiste. C'est embétant puisque l'ouverture est demain ! Si vous pouvez m'aider svp sa serrai sympa de votre part ! Je n'es pas les lignes de codes mais les lignes de code marche puisque en solo les minerais sont générés ! Mais pas dans les serveurs ! J'utilise Multiverse-Core 2.5 j'ai essayé avec MultiWord mais sa ne marche pas non plus !

    Bonne Soirée !  😉 😢


  • Administrateurs

    Salut,
    Il faut en effet retirer le switch sur la dimension dans le code du mod.
    Il faut compiler ensuite le mod pour que les modifications soient prise en compte.



  • Merci de votre réponse,

    Mais le problème persiste !
    J'ai le mod sans le switch!

    Cordialement

    Edit : Voici le fichier WorldGenerator en question je l'es décompile grâce à Java Decompiler sachant que j'ai pas encore les sources ^^'

    package fr.rameidon.zerconia.common.core.worldgen;
    
    import cpw.mods.fml.common.IWorldGenerator;
    import fr.rameidon.zerconia.handlers.ModBlock;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.feature.WorldGenMinable;
    
    public class WorldGenerator
     implements IWorldGenerator
    {
     public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {}
    
     public void generateOverworld(Random random, int chunkX, int chunkZ, World world)
     {
       addOreSpawn(ModBlock.zeniumOre, 0, Blocks.field_150348_b, world, random, chunkX, chunkZ, 16, 16, 3, 0, 14, 5);
       addOreSpawn(ModBlock.uranniteOre, 0, Blocks.field_150348_b, world, random, chunkX, chunkZ, 16, 16, 4, 5, 40, 35);
       addOreSpawn(ModBlock.zintiumOre, 0, Blocks.field_150348_b, world, random, chunkX, chunkZ, 16, 16, 5, 5, 56, 70);
     }
    
     public void generateNether(Random random, int chunkX, int chunkZ, World world)
     {
       addOreSpawn(ModBlock.onyxOre, 0, Blocks.field_150424_aL, world, random, chunkX, chunkZ, 16, 16, 5, 0, 40, 50);
     }
    
     public void addOreSpawn(Block block, int metadata, Block target, World world, Random random, int blockXPos, int blockZPos, int maxX, int maxZ, int maxVeinSize, int chancesToSpawn, int minY, int maxY)
     {
       assert (maxY > minY) : "La position Y maximum doit ?tre sup?rieure ? la position Y minimum.";
       assert ((maxX > 0) && (maxX <= 16)) : "X doit se trouver entre 0 et 16.";
       assert (minY > 0) : "La position Y minimum doit ?tre sup?rieure ? 0.";
       assert ((maxY < 256) && (maxY > 0)) : "La position Y maximum doit se trouver entre 0 et 256.";
       assert ((maxZ > 0) && (maxZ <= 16)) : "Z doit se trouver entre 0 et 16.";
       for (int i = 0; i < chancesToSpawn; i++)
       {
         int posY = random.nextInt(128);
         if ((posY <= maxY) && (posY >= minY)) {
           new WorldGenMinable(block, metadata, maxVeinSize, target).func_76484_a(world, random, blockXPos + random
             .nextInt(16), posY, blockZPos + random.nextInt(16));
         }
       }
     }
    }
    
    

    Je met au cas ou ce code aussi :

    package fr.rameidon.zerconia.common.core;
    
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.eventhandler.EventBus;
    import cpw.mods.fml.common.registry.GameRegistry;
    import cpw.mods.fml.relauncher.Side;
    import fr.rameidon.zerconia.client.gui.CustomTabs;
    import fr.rameidon.zerconia.client.menu.CustomInGameMenu;
    import fr.rameidon.zerconia.client.menu.CustomMenu;
    import fr.rameidon.zerconia.client.menu.RenderF3;
    import fr.rameidon.zerconia.common.core.worldgen.WorldGenerator;
    import fr.rameidon.zerconia.handlers.CraftManager;
    import fr.rameidon.zerconia.handlers.ModArmor;
    import fr.rameidon.zerconia.handlers.ModBlock;
    import fr.rameidon.zerconia.handlers.ModItems;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraftforge.common.MinecraftForge;
    
    @Mod(modid="zerconia", name="Zerconia", version="1.0 RE")
    public class Zerconia
    {
     @SidedProxy(clientSide="fr.rameidon.zerconia.client.core.ClientProxy", serverSide="fr.rameidon.zerconia.common.core.CommonProxy")
     public static CommonProxy proxy;
     @Mod.Instance("zerconia")
     public static Zerconia instance;
     public static final String MODID = "zerconia";
     public static CreativeTabs tab = new CustomTabs("zerconia");
    
     @Mod.EventHandler
     public void preInit(FMLPreInitializationEvent event) {}
    
     @Mod.EventHandler
     public void init(FMLInitializationEvent event)
     {
       ModBlock.initBlocks();
       GameRegistry.registerWorldGenerator(new WorldGenerator(), 0);
       ModArmor.initArmors();
       ModItems.initItems();
       CraftManager.initCraft();
       if (event.getSide().isClient())
       {
         FMLCommonHandler.instance().bus().register(new CustomInGameMenu());
         MinecraftForge.EVENT_BUS.register(new RenderF3());
         FMLCommonHandler.instance().bus().register(new CustomMenu());
       }
     }
    
     @Mod.EventHandler
     public void postInit(FMLPostInitializationEvent event) {}
    }
    
    

  • Administrateurs

    La fonction generate est vide donc forcement il ne se passe rien …
    Il faudrait qu'elle soit ainsi :

    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
    generateSurface(world, random, chunkX * 16, chunkZ * 16);
    generateNether(world, random, chunkX * 16, chunkZ * 16);
    }
    

    (les minerais du nether ne vont pas ce générer dans les autres mondes comme il n'y a pas de nether rock).

    Autres solutions, qui éviterai des tentatives de génération inutile :

    @Override
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {
    
    if(world.provider.dimensionId == -1) // nether
    {
    generateNether(world, random, chunkX * 16, chunkZ * 16);
    }
    else // autres mondes
    {
    generateSurface(world, random, chunkX * 16, chunkZ * 16);
    }
    }