Résolu 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 -
Tu définie la direction de ton bloc de quelle façon ? Dans un TE ?
-
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); } }
-
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
setDirectionThe method setDirection(byte) in the type TileEntityblock2 is not applicable for the arguments (int)
-
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
-
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 bytesTu 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();