Comment changer la direction d'un bloc avec rendu Techne lorsqu'on le pose
-
Envoi tes code
-
regarde dans le tuto de kevin_68 sur le model techne, il donne la solution
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack) { int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3; TileEntity te = world.getBlockTileEntity(x, y, z); if(te != null && te instanceof TileEntitySculpture) { ((TileEntitySculpture)te).setDirection((byte)direction); world.markBlockForUpdate(x, y, z); } }puis
if(te != null) { GL11.glRotatef(90F * te.getDirection(), 0.0F, 1.0F, 0.0F); } -
@‘NicoKing60’:
malgré mes recherche intensive sur le site (et ailleurs)
-
J’ai beau chercher et modifier vos truc "une 2ème fois " parce que oui je les déjà vu et ça n’avais pas marché et là bah ça ne marche toujours pas donc conclusion soit ça ne marche pas en 1.7 ou alors je sais pas, ça m’étonnerais encore que ça ne marche pas en 1.7 puisque tout le monde me dis que c’est comme ça qu’on fait.
J’ai tout enlever et je vais retenter encore une fois et si ça marche pas tant pis c’est pas bien grave
-
Envoie ton code.
-
En faite quand je suit le tuto de kevin_68 j’arrive à un moment où j’ai une erreur :
private final ModelGemWorker model = new ModelGemWorker(); public static final ResourceLocation textureLocation = new ResourceLocation("battleforsurvive", "textures/blocks/model/gem_worker.png"); public GemWorkerTileEntitySpecialRender() { this.setTileEntityRenderer(TileEntityRenderer.instance); }à this.setTileEntityRenderer(TileEntityRenderer.instance); le TileEntityRenderer.instance montre une erreur et il me propose de le corriger contre d’autre modèle de tile entity, pourtant de le tuto il dit pas qu’il y a une erreur et que c’est normal è_é
EDIT: J’ai oublié ça aussi :
public void renderGemWorkerTileEntityAt(GemWorkerTileEntity te, double x, double y, double z, float tick) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5F, y + 1.5F, z + 0.5F); this.bindTexture(textureLocation); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); if(te != null) { GL11.glRotatef(90F * te.getDirection(), 0.0F, 1.0F, 0.0F); } this.model.renderModel(0.0625F); GL11.glPopMatrix(); }à getDirection() j’ai aussi une erreur et il me propose de mettre une methode dans la class de mon tile entity et ça donne ça
public float getDirection() { return 0; }Il n’y a plus d’erreur dedans mais je sais pas si il fait que je laisse comme ça ou pas

-
au niveau du render il n’y a plus rien à faire normalement.
Il faut juste adapter la direction (qui est un entier entre 0 et 5 ou 0 et 3) afin que le tile entity l’enregistre et la donne quand il faut.Tu trouvera le code approprié dans le tutoriel de robin sur les blocs directionnels ou sur son github ici
-
ça y est je peut l’orienter !!!
Mais il n’a plus de texture et quand je le pose il me montre l’arrière plutôt que l’avant XD
EDIT : J’ai rien dit pour la texture, j’ai fait une faute dans le ResourceLocation (j’ai écrit RessourceLocation avec 2 s)
EDIT 2 : Et il ne conserve pas leur direction

EDIT 3 : C’est bon j’ai réussi à bien l’orienté quand je le pose, mais quand je quitte le monde ils ne conserve toujours pas leur orientation è_é
EDIT 4 : ok j’ai résolu le problème de la conservation de l’orientation de mon bloc lorsqu’on quitte minecraft, mais il reste encore le problème des particules qui ne sont pas de la même couleur que mon bloc lorsque je le casse…
-
tu met:
public Icon getIcon(int side, int metadata) { return Block.stone.getIcon(0, 0); }cela permet de mettre les particule de stone quand tu le casse/sprint dessus
il suffit de remplacer par ton bloc -
Oui j’y ai pensé j’était en train d’essayer et j’ai vu ton message ^^
Sauf que dans ton code il y a une erreur : Block devient Blocks et Icon devient IIcon
public IIcon getIcon(int side, int metadata) { return Blocks.iron_block.getIcon(0, 0); }Avec ça mon bloc fait des particules de bloc de fer, après je dis ça mais ton code est peut-être celui qui marche en 1.6 mais moi je code en 1.7 et avec ton code il y a des erreurs

-
oui c’est un code 1.6 ^^
