Sponge 1.8 en 1.7.10



  • Bonjour les gens,

    Je voudrais ajouter les éponge de l'1.8 dans l'1.7.10
    –> je voudrais savoir comment faire pour que l'éponge vire l'eau autour d'elle comme en 1.8
    j'ai essayer de voir dans la class de l'1.8 mais y a les blockpos et je voie trop comment faire
    Merci de bien vouloir m'aider



  • Je ne connais pas la 1.8 tu peux mieux décrire le procédé ?

    Et blockpos = Location je crois donc rien de très compliqué TonBloc.getLocation()


  • Administrateurs

    Salut,
    C'est vraiment pas compliqué à faire …
    Il suffit de remplacer les blocs d'eau par de l'air sur un rayon donné, donc avec 3 boucles for.

    Concernant les blocspos, c'est juste un objet qui contient x, y et z.



  • ok mais comment je remplace les blocks dans un rayon de…?


  • Administrateurs

    for(int x1 = -3; x1 < 4; x1++)
    {
        for(int y1 = -3; y1 < 4; y1++)
        {
            for(int z1 = -3; z1 < 4; z1++)
            {
                 if(world.getBlock(x + x1, y + y1, z + z1).getMaterial().isWater())
                 {
                     world.setBlockToAir(x + x1, y + y1, z + z1);
                 }
    
            }
        }
    }
    
    

    Il y a quoi de compliqué la dedans ?



  • Ha! C’était donc comme cela qu'il fallait s'y prendre :3

    Mercii 😄

    EDIT: 
    j'ai un petit soucis : 1) mon block n'est pas replace 2) l'eau s'update et reforme des sources
    Comment je dois faire alors ?

    [font=Source Code Propublic int ]onBlockPlaced(World *world*, int *x*, int *y*, int *z*, int *side*, float *hitX*, float *hitY*, float *hitZ*, int *metadata*)
    {
       for(int x1 = -3; x1 < 4; x1++)
       {
           for(int y1 = -3; y1 < 4; y1++)
           {
               for(int z1 = -3; z1 < 4; z1++)
               {
                   if(*world*.getBlock(*x *+ x1, *y *+ y1, *z *+ z1) == Blocks.water)
                   {
                       *world*.setBlockToAir(*x *+ x1, *y *+ y1, *z *+ z1)%(#aaa9a7)[;
    ]                    *world*.setBlock(*x*, *y*, *z*, SpongeMod.wetSponge)%(#aaa9a7)[;
    ]                }
               }
           }
       }
       return *metadata*%(#aaa9a7)[;
    ]}
    


  • Ici tu regardes dans un cube de 3*3, si le block c'est de l'eau tu le remplaces par de l'air et tu mets un block d'éponge à l'emplacement où l'éponge vient d'être placée, je vois pas l'utilité ? Si les sources d'eau se re-génère derrière c'est normal c'est la mécanique de l'eau qui est comme ça, essaie en dehors d'un océan.



  • Pk l'blok s'plasse pa ?

    public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
    {
    for(int x1 = -3; x1 < 4; x1++)
    {
    for(int y1 = -3; y1 < 4; y1++)
    {
    for(int z1 = -3; z1 < 4; z1++)
    {
    if(world.getBlock(x + x1, y + y1, z + z1) == Blocks.water)
    {
    world.setBlockToAir(x + x1, y + y1, z + z1);
    world.setBlock(x, y, z, SpongeMod.wetSponge);
    }
    }
    }
    }
    return metadata;
    }
    


  • Met un System.out.println("sth") et regarde si la fonction est bien appelee.



  • déjà fait, et oui c'est appelé
    tout le code est executé sauf le setblock


  • Administrateurs

    Ajoutes System.out.println(world.getBlock(x + x1, y + y1, z + z1) == Blocks.water); au dessus de if(world.getBlock(x + x1, y + y1, z + z1) == Blocks.water)
    Je pense que tu aura false dans la console.
    Si c'est bien le cas, je te laisser chercher un peu pourquoi et si tu ne trouve pas je te dirai la raison.