Texture de destruction de block



  • Bonjour,

    Je cherche a créer un bloc qui change d'apparence en fonction de son blockstate (ou de sa metadata comme vous voulez) mais je ne veux pas faire une texture pour chaque metadata.

    Je m'explique, je veux faire un bloc que l'on détruit en tapant  16 coups dessus et donc qu'on puisse partir et revenir le taper plus tard sans avoir a recommencer du début. Pour le rendu j'aurais bien aimé avoir le même effet que quand l'on casse un bloc (les fissures qui grandissent) sans avoir a faire une texture spécifique a chaque étape.

    Donc j'aimerais savoir si vous connaissez une fonction de minecraft qui permet de faire ce rendu ( et qui est surement utilisée lorsque l'on casse un bloc ) ou si c'est faisable avec des models en  .json ?

    Cordialement,
    Vebert


  • Administrateurs

    Salut,
    Franchement je ne sais pas du tout où est géré l'affichage des fissures. Par contre tu peux très bien stocker l'état d'usure de ton bloc dans un tile entity et utiliser la fonction getActualState pour renvoyer un état différent en fonction de cette valeur. Ensuite il te suffira de jouer sur les textures.



  • Bon dans mon mod je voulais utiliser ça sur 20/30 bloc voir plus (en gros remplacer les blocs du sol avec des bloc comme décrit au dessus) donc je ne voulais pas avoir 16 textures par bloc et réutiliser la superposition d'image qui est utilisé lorsqu'on détruit un bloc. Et je ne veux pas avoir en plus des tile entity sur toute ma map…

    Je vais continuer a fouiller le code pour voir si je trouve quelque chose à propos des fissures et faire un 16 model en .json en attendant.

    Je laisse le sujet ouvert une semaine si quelqu'un a une idée.

    Merci pour ton aide,
    Vebert


  • Modérateurs

    Va falloir un rendu spécial pour ça:

    • dessiner le bloc normalement
    • activer la transparence avec OpenGL
    • glDepthFunc(GL_EQUAL);
    • dessiner le bloc avec la texture de fissure
    • desactiver la transparence
    • glDepthFunc(GL_LEQUAL);

    Sent from my GT-I9000 using Tapatalk 2



  • Merci pour vos réponses, j'ai pas mal fouillé les codes

    Pour le rendu des blocks en cour de destructions il y a une hashtable qui traine dans les codes de minecraft, elle associe un entier (l'id d'une entité) à une structure qui regroupe un block et son état de destruction. Donc c'est pas vraiment optimisé pour ce que je voulais faire ( je ne vais pas pondre un id pour chaque position).

    J'ai donc préféré choisir la solution de prendre un tileEntity avec un specialRenderer (en 1.8 elles ont pas l'air d'être appelées à chaque tick donc elles doivent moins consommer). Je crois aussi que l'ISBRH n’existe plus en 1.8.

    Je passe en résolu même si je n'ai pas trouvé de méthode qui me semble optimal.


  • Administrateurs

    @'Vebert':

    (en 1.8 elles ont pas l'air d'être appelées à chaque tick donc elles doivent moins consommer). Je crois aussi que l'ISBRH n’existe plus en 1.8.

    Si si c'est toujours le cas. Par contre en effet l'interface ISBRH n'existe plus comme les json fond le job.