Tutoriel [Tutoriel](Modding)Colorizer et Méta - datas

TheFumelgo

Aventurier
26 Juin 2012
29
2
3
37
1348304187-2012-09-22-10-46-02.png
-[INTRODUCTION]-

Voilà ! Vous devez avoir l'habitude des noms qui n'inspirent rien de bon si vous lisez mes tutoriels
14.png

Mais là, à la fin, vous serez fier de ce que vous aurez appris, une fois de plus. Au passage, ce tutoriel peut intéresser les utilisateurs de ModLoader également, bien que ces personnes soient différents (moi, raciste ?).
En effet, je crois qu'il ne demanderait pas beaucoup de modification étant donné qu’exception faite des classes crées, il y a 2 lignes de code.
Et maintenant que j'ai correctement capté votre attention, pourquoi ne pas vous expliquer ce que se cache derrière ce nom louche ? On va le décomposer en 2 mots.
Metadata signifie que je vais créer plusieurs blocks sur le même ID car ils sont très semblables.
Colorizer est quelque chose d'un peu plus neuf pour la majorité d'entre vous, mais si vous allez vite voir dans eclipse, il s'agit des fonctions utilisées pour colorer les feuilles.
En effet, dans le terrain, elle sont grises. Je me suis inspiré de ça pour créer mes blocks colorés.

Si vous êtes rapide, vous avez déjà compris. Je vais créer 16 blocks, avec 1 ID, et AUCUNE nouvelle texture
14.png
Byebye forge, tu ne sers plus à rien
mort.gif
1348304188-2012-09-22-10-50-17.png
1] Théorie

Première partie : la théorie. Qu'est ce qu'il y a à expliquer ? La logique sur laquelle va se poser notre code, ainsi que celle existant déjà dans minecraft.
Tout d'abord, notre logique.
-On va commencer par créer notre block
-Bien sur, on va lui créer une classe
-On va définir en plusieurs temps que notre block utilise les metadatas
-On va modifier sa couleur (en main) en fonction du metadata via un item
-On va modifier le rendu en fonction du metadata

Créer le bloc, je suppose que vous serez capable de comprendre.

Pour ce qui est du méta-data, ce qu'il faut savoir, c'est qu'un bloc (par défaut) peut avoir 16 méta-datas. Ceux-là même que l'on va utiliser pour notre block.
La se pose la question : sa sert à quoi ?
A réduire le nombre d'IDs utilisés, et d'autres choses, mais ce qu'il faut retenir c'est qu'ils ont beaucoup de traits COMMUNS.
Par exemple, tous mes blocks seront les mêmes, à la différence près de leur texture. Je tiens à mentionner que dans ce tutoriel, mon exemple sera une vitre, mais n'hésitez pas à le faire avec d'autre blocks
14.png

Prenez la texture de base de la laine, et modifier le rendu
14.png
Vous avez des tapis avec métadata
14.png

Bon, c'est pas forcément le meilleur exemple car les textures existent déjà, mais je sens que ce tutoriel peut avoir de nombreux débouchés (même si c'est la cas de tout tuto
14.png
)


Ensuite, pour l'item (je suis pas dans le même ordre que la liste, et alors ?), ce ne sera pas très compliqué, un peu de bon sens, et le tour est joué. Tout ce qu'il faut retenir c'est qu'on défini la parité block/méta-data && item/méta-data dans la classe Block. Le code utilisé pour sa couleur nous renverra à Colorizer*monblock* qui sera pendant le reste du tutoriel ColorizerColoredGlass.

Pour le rendu du bloc en couleur, même chose, il nous renverra à ColorizerColoredGlass, comme le font les feuilles
8.png


Et enfin ce ColorizerColoredGlass... Ben, il y a presque rien dedans !
mais.gif

En effet, hormis (souris) une ou deux fontion / méthode, tout ce qu'il y a, ce sont des chiffres
14.png
2] Liste des couleurs

Je sais, c'est un peu en désordre... Mais bon
noel.gif

En fait, pour la suite, je vais définir la classe complète, les couleurs, et seulement les items...
Donc si vous voulez faire des tests au fur et à mesure, retirez la ligne de code précédente, mais n'oubliez pas de la remettre au moment venu !

Alors, dans minecraft, et dans cette version d'OpenGL, si je ne me trompes pas, les couleurs ont de drôle de noms...

Pas de Block.colorize.jaune, soyons réalistes
14.png

Par contre, ce qui est frustrant, c'est que la couleur ne soit ni en hexadécimal ni en RVB.

Pour exemple : 2437522 est du bleu.

Alors là, je dis chapeau ! Il pouvaient pas faire plus simple ?
fou.gif


En fait, pour avoir la couleur :

2437522 => Transformer en hexadecimal => 253192 => Lire RRGGBB => 25 : 32 : 92 => Prédominance du bleu => C'est du bleu

Alors, pour obtenir votre code, il faut faire le contraire. Commencez par choisir votre couleur ici, et copiez le code hexadécimal
8.png

Ensuite, collez le ici pour obtenir le code en décimal. Ce code servira donc à définir votre couleur
8.png


Alors je vous dis pas comment je me fesais ch...
Jusqu'à ce que je penses à aller voir dans ItemDye, et on a en fait les correspondance, sans devoir réfléchir, à une exception près
14.png


Je vous mets donc la liste de ce pas :

  • Black : 19773019
  • Red : 11743532
  • Green : 3887386
  • Brown : 5320730
  • Blue : 2437522
  • Purple : 8073150
  • Cyan : 2651799
  • LightGrey (Silver) : 2651799 dans le code, mais vous l'aurez remarqué, c'est le même que Cyan, utilisez : 12303291
  • DarkGrey : 4408131
  • Pink : 14188952
  • LightGreen (Lime) : 4312372
  • Yellow : 14602026
  • LightBlue : 6719955
  • Magenta : 12801229
  • Orange : 15435844
  • White : 15790320

Avec ça, vous devrez déjà mieux suivre ce qui va suivre :lol:​

3] Le tutoriel en vidéo
Voilà, j'espère que vous aurez appris quelque chose. Vous pouvez aussi lire mon tutoriel sur [url=http://forum.ironcraft.fr/viewtopic.php?f=43&t=7490] Ironcraft :)[/URL]​
Bien sur, vous pouvez aussi vous abonner à ma chaîne pour voir plus vite mes tutoriels ;)