• Bonjour, alors que je testai la génération d'une de mes structures, je me suis rendu compte que la génération de celle-ci détruisait complètement la logique de mise à jour du jeu (je pouvais bouger, mais tout ce qui était IA, génération etc ne répondait plus) et aucun rapport de crash donc.

    Classe principale :

    ...
    @EventHandler
    public void Init(FMLInitializationEvent event)
    {
        GameRegistry.registerWorldGenerator(new DragonsWorldGenerator(), 100);
    }
    ...
    

    DragonsWorldGenerator.java :

    ...
    private void generateSurface(World world, int x, int z, Random random)
    {
        int x1 = x + random.nextInt(16);
         int z1 = z + random.nextInt(16);
        int y1 = random.nextInt(3);
        for(int i = 0; i < 1; i++)
        {
            (new WorldGenDungeonRoomSmall()).generate(world, random, x1, y1, z1);
        }
    }
    ...
    

    WorldGenDungeonRoomSmall.java :

    package fr.MrBlockTNT.Dragons.world.structure.ice;
    
    import java.util.Random;
    
    import fr.MrBlockTNT.Dragons.core.Dragons;
    
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraft.world.gen.feature.WorldGenerator;
    
    public class WorldGenDungeonRoomSmall extends WorldGenerator
    {
        @Override
        public boolean generate(World world, Random rand, int x, int y, int z)
        {
            if(world.getBlock(x, y - 1, z) != Blocks.air)
            {
                // Clear
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; i < 7; j++)
                    {
                        for(int k = 0; k < 9; k++)
                        {
                            world.setBlock(x + i, y + j, z + k, Blocks.air);
                        }
                    }
                }
    
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; j < 9; j++)
                    {
                        world.setBlock(x + i, y, z + j, Dragons.frozen_cobblestone);
                    }
                }
    
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; j < 9; j++)
                    {
                        world.setBlock(x + i, y + 6, z + j, Dragons.frozen_cobblestone);
                    }
                }
    
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; j < 7; j++)
                    {
                        world.setBlock(x, y + j, z + i, Dragons.frozen_cobblestone);
                    }
                }
    
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; j < 7; j++)
                    {
                        world.setBlock(x + 8, y + j, z + i, Dragons.frozen_cobblestone);
                    }
                }
    
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; j < 7; j++)
                    {
                        world.setBlock(x + i, y + j, z, Dragons.frozen_cobblestone);
                    }
                }
    
                for(int i = 0; i < 9; i++)
                {
                    for(int j = 0; j < 7; j++)
                    {
                        world.setBlock(x + i, y + j, z + 8, Dragons.frozen_cobblestone);
                    }
                }
                return true;
            }
            return false;
        }
    }
    

  • Tu as regarder le tuto

    edit : je n'ai pas regarder le code.


  • Ouaip

  • Moddeurs confirmés Rédacteurs Administrateurs

    @'MrBlockTNT':

    Bonjour, alors que je testai la génération d'une de mes structures, je me suis rendu compte que la génération de celle-ci détruisait complètement la logique de mise à jour du jeu (je pouvais bouger, mais tout ce qui était IA, génération etc ne répondait plus) et aucun rapport de crash donc.

    Ça veut dire que le world client répond toujours mais pas le world server.
    Les world.setBlock sont beaucoup trop gourmand, c'est pour ça que minecraft utilise autre chose pour la génération des mines.


  • C'est trop gourmand pour une structure de 9x9x7 alors que pour une structure de 53x53x21 ça prend une dizaine de secondes ? 😮
    Mais merci quand même, je vais jeter un oeil aux codes de Minecraft. Sujet résolu.