1.7.10 Changer la résistance d'UNE dalle



  • Bonjour ! Comme vous le savez pour faire des slabs on à besoin de metadata et de deux autres classe (ex: BlockSlabs & ItemSlabs).

    Je voudrais savoir si c'est possible que UNE seule dalle est la résistance à la TNT (dalle d'obsidienne) mais si en même temps je peut mettre d'autres dalles dans ces deux classes pour économiser de l'espace.

    Voilà, tel est ma question !



  • Il me semble qu'il y a une méthode pour avoir la résistance à la tnt qui fournit en paramètre une entité donc grâce à cette méthode tu peux regarder le metadata du block. Minecraft aime utiliser les calculs binaires pour économiser de l'espaces mais çà rend très souvent le code incompréhensible.



  • Tu aurais une idée de cette méthode ou dans quoi la trouvais, j'ai regardé dans l'obsi et la tnt mais rien.



  • getExplosionResistance, fait Alt + shift + R puis "override/implement methods" et choisit la fonction getExplosionResistance



  • D'accord ! Je regarde sur le net un peu.

    EDIT : J'ai trouvé ça et sa fonctionne mais je voudrais savoir si c'est bon 🙂

    ​    public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ)
        {
         int mag1 = world.getBlockMetadata(x, y, z);
        switch (mag1)
         {
         case 0:
          mag1 = 0;
                return 50.0F;
            default:
             mag1 = 0;
             return 50.0F;
         }
    }
    


  • Ce code ne fait pas grand chose :

    public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ)
    {
    int mag1 = world.getBlockMetadata(x, y, z); // Tu récupères le metadata
    switch (mag1) // Tu regardes lequel c'est
    {
    case 0: // Si c'est le premier
    mag1 = 0; // Tu met le metadata à 0, ce qui ne sert à rien
    return 50.0F; // Puis tu retournes 50.0F
    default: // Sinon
    mag1 = 0; // Tu mets le metadata à 0, encore inutile
    return 50.0F; // Et tu retournes encore 50.0F donc çà renverra toujours la même valeur
    }
    }
    

Log in to reply