TESR qui rend mal, et qui n'a pas une jolie Hitbox
-
Mais mais, pourquoi utiliser les icônes ? Les icônes ne servent que pour un bloc avec un rendu normal.
@‘robin4002’:Et pas besoin de faire plusieurs icon dans ton bloc, le TileEntitySpecial rendu s’occupe de tout.
Ton problème d’orientation vient de la :
public void renderTileEntityTileEntityPanneauAt(TileEntityPanneau te, double x, double y, double z, float tick) { GL11.glPushMatrix(); GL11.glTranslated(x + 1.05F, y + 1.5F, z + 0.5F); this.bindTexture(textureLocation); GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); this.model.render(0.0625F); if(te != null) { GL11.glRotatef(90F * te.getDirection(), 0.0F, 1.0F, 0.0F); } GL11.glPopMatrix(); }Cela devrait être :
public void renderTileEntityTileEntityPanneauAt(TileEntityPanneau te, double x, double y, double z, float tick) { GL11.glPushMatrix(); GL11.glTranslated(x + 1.05F, 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.render(0.0625F); GL11.glPopMatrix(); }Le this.model.render doit être en dernier.
-
ça ne change toujours rien.
-
Bon, étant donné que ces blocks ne seront pas usés par les joueurs, je vais faire en sorte qu’ils tournent en clique droit dessus.
Donc j’ai mis ce code dans TileEntityPanneauSpecialRender.java, mais aucun changements.public boolean interact(EntityPlayer player) { GL11.glPushMatrix(); GL11.glRotatef(90F, 1.0F, 0.0F, 0.0F); GL11.glPopMatrix(); return false; } -
Problème trouvé. Dans la classe de ton bloc, dans la fonction onBlockPlacedBy :
if(te != null && stack.getItemDamage() == 2 && te instanceof TileEntityPanneau) { ((TileEntityPanneau)te).setDirection((byte)direction); world.markBlockForUpdate(x, y, z); }enlève le stack.getItemDamage() == 2 &&, je l’ai mit dans mon tutoriel car j’ai expliqué que j’orientais que le bloc de metadata 2.
-
Parfait, sauf que j’ai quelques légers problèmes :

-
Ha oui, comme tu as centré le modèle avec la direction par défaut, ça fail pour les autres directions.
Dans le if(te != null) de ta fonction renderTileEntityTileEntityPanneauAt dans ta classe TileEntitySpecialRender, il faut que tu ajoute une condition qui check la direction, et tu fais des gl11.translate par rapport à la direction. -
Euh, le block bouge en même temps que moi Oo
-
What x) ?
Envoie ton code. -
public void renderTileEntityTileEntityPanneauAt(TileEntityPanneau te, double x, double y, double z, float tick) { GL11.glPushMatrix(); GL11.glTranslated(x + 1.05F, 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); if (te.direction == 1) { // GL11.glTranslated(x + 1.05F, y + 1.5F, z + 0.5F); } if (te.direction == 2) { GL11.glTranslated(x + 0.2F, y + 0.0F, z + 0.0F); } if (te.direction == 3) { // GL11.glTranslated(x + 1.05F, y + 1.5F, z + 0.5F); } if (te.direction == 0) { //base, pas besoin de modifier } System.out.println("La direction est " + te.direction); } this.model.render(0.0625F); GL11.glPopMatrix(); } -
Ne mets pas les x, y et z dans les translates qui ajuste en fonction de la direction.
-
Je mets quoi alors ?
-
GL11.glTranslated(0.2F, 0.0F, 0.0F);
Tout simplement.
Le premier GL11.glTranlate déplace déjà le bloc au coord x, y, z. -
Parfait !

et peut-tu me passer le lien du lampadaire de Nanotech City, pour que je voie pour les blocs fantômes ? -
C’est lui normalement ^^
Pour les rendus dans l’inventaire, pense a GL11.glScale
-
L’item bloc est aussi différent : https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/city/blocks/ItemBlockLamp.java#L39-L69