SetBlock Avec Direction



  • Bonjour,

    j'ai crée un bloc 'special' ou quand on clique dessus sa le remplace en un autre bloc, mais le problème c'est que je ne sait pas faire en sorte que ce bloc soit dans la même direction que le précédent ^^.

    En Gros:

    Block1 devient Block2 quand on clique dessus
    Mais Block2 ne se met pas dans le sens que était Block1


  • Rédacteurs

    Tu définie la direction de ton bloc de quelle façon ? Dans un TE ?


  • Correcteurs

    Eh bien, peu importe si tu utilises un TE ou les metadata, tu récupère la direction et tu l'appliques sur ton bloc.



  • @'BrokenSwing':

    Tu définie la direction de ton bloc de quelle façon ? Dans un TE ?

    Oui c'est un TE
    @'DiabolicaTrix':

    Eh bien, peu importe si tu utilises un TE ou les metadata, tu récupère la direction et tu l'appliques sur ton bloc.

    j'ai essayer cela mais sa ne marche pas

      public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
           {
            TileEntity tile = world.getTileEntity(x, y, z);
    
        int direction = ((TileEntityblock1)tile).getDirection();
        if(direction == 0)
        {
        world.setBlock(x, y, z, LaFrenchCraftMOD.block2, 0, 0);
        }
        else if(direction == 1)
        {
        world.setBlock(x, y, z, LaFrenchCraftMOD.block2, 1, 0);
        }
        else if(direction == 2)
        {
        world.setBlock(x, y, z, LaFrenchCraftMOD.block2, 2, 0);
        }
        else if(direction == 3)
        {
        world.setBlock(x, y, z, LaFrenchCraftMOD.block2, 3, 0);
        }
        }
    

  • Rédacteurs

    
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
    TileEntity tile = world.getTileEntity(x, y, z);
    
    int direction = ((TileEntityblock1)tile).getDirection();
    world.setBlock(x, y, z, LaFrenchCraftMOD.block2);
    ((Cast)world.getTileEntity(x, y, z)).setDirection(direction);
    }
    
    


  • @'DiabolicaTrix':

    Eh bien, peu importe si tu utilises un TE ou les metadata, tu récupère la direction et tu l'appliques sur ton bloc.

    @'BrokenSwing':

    
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
           TileEntity tile = world.getTileEntity(x, y, z);
       
           int direction = ((TileEntityblock1)tile).getDirection();
           world.setBlock(x, y, z, LaFrenchCraftMOD.block2);
           ((Cast)world.getTileEntity(x, y, z)).setDirection(direction);
    }
    
    

    heuu j'ai une erreur sur

    ((Cast)world.getTileEntity(x, y, z))
    

    Cast cannot be resolved to a type

    j'ai essayer de remplace cast par le TE du Block 2 mais la aussi une erreur mais sur le

    %(#333333)[```java
    setDirection

    
    The method setDirection(byte) in the type TileEntityblock2 is not applicable for the arguments (int)

  • Correcteurs

    cast byte à direction.



  • @'DiabolicaTrix':

    cast byte à direction.

    oui j'y ai penser des que j'ai poster XD et sa marche parfaitement(sa m'apprendra a réfléchir plus avant de poster XD) merci a vous tous 🙂


  • Rédacteurs

    Pour Cast c'est normal c'était juste pour indiquer qu'il fallait cast le TE
    Ensuite tu devrais avoir le même système de direction pour tout tes blocs, si tu utilise un byte, fait le tout avec les bytes

    Tu déclare la variable direction comme un byte ```java
    private byte direction;

    Tu récupère un byte losque tu récupère la direction ```java
    public byte getDirection() { return direction; }
    

    Tu met un byte en argument lorsque tu set la direction ```java
    public void setDirection(byte d) { direction = d; }

    Et du coup tu récupère un byte dans la fonction onBlockActivated :
    ```java
    byte direction = ((Cast)TE).getDirection();