Aller au contenu
chaos90

[1.X] Mettre une description sur un item

Recommended Posts

Mettre une description sur un item

 


88x31.png
Cette oeuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Pas de Modification 3.0 non transposé . Tout partage implique que vous citiez l'auteur original.

 

-[iNTRODUCTION]-

 

Salut tout le monde !

Dans ce tutoriel nous allons voir comment ajouter une description sur un item

 

-[SOMMAIRE]-


1] Ajouter la description

2] Ajouter une touche pour voir la description

3] Mettre une description d'un item sans description

4] Bonus d'amélioration

a] pouvoir changer la touche

 

 

1] Ajouter la description

 

Pour ajouter une description sur un item rien de bien compliquer nous allons aller dans Item.java et chercher 

public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {}

Ensuite dans les accolade nous allons tout simplement ajouter un IF - ELSE avec une conditions qui va récupérer l'item en choisi comme ceci :

 

    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
    {
    	if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item
        	par3List.add("Description"); // on ajoute la description
    }

Voici un screen :

wVjQFhh.png

 

 

2] Ajouter une touche pour voir la description

 

Alors pour le moment nous avons ça :

    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
    {
    	if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item
        	par3List.add("Description"); // on ajoute la description
    }

Mais nous velons que quand on appuis sur LSHIFT par exemple que ça affiche la description nous nous allons rajouter un autre IF une condition de KeyBinding comme ceci :

    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
    {
        if(Keyboard.isKeyDown(42)) { // si la touche LSHIFT est pressée alors ça execute
    	    if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item
        	    par3List.add("Description"); // on ajoute la description
        } else
            par3List.add("Appuyez sur LSHIFT pour voir la description"); // si la touche LSHIFT n'est pas pressée alors on affiche ceci
    }

Donc la si on appuis pas ça affiche rien et si on appuis ça affiche la description sauf qu'il faut prévenir les personne d'appuyer sur LSHIFT donc nous allons tout simplement faire un ELSE qui va rajouter une description mais just pour nous prévenir comme ceci

voila donc pour le moment nous avons ceci:

un petit screen :

 

3e7892e471804e47952ed8c56caa5d95.png

 

3] Mettre une description d'un item sans description

 

Maintenant nous avons notre description quand on appuis sur LSHIFT mais tout les items on aussi la phrase "Appuyez sur LSHIFT pour voir la description" sauf que ensuite ça n'affiche rien donc nous allons rajouter une else après le if de l'item choisi comme cela :

    public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
    {
        if(Keyboard.isKeyDown(42)) { // si la touche LSHIFT est pressée alors ça execute
    	    if (par1ItemStack.getItem() == Items.diamond_sword) // on cherche l'item
        	    par3List.add("Description"); // on ajoute la description
        	else
        	    par3List.add("Aucune description pour cet item"); // on ajoute la description de tout les items non défini
        } else
            par3List.add("Appuyez sur LSHIFT pour voir la description"); // si la touche LSHIFT n'est pas pressée alors on affiche ceci
    }

Et voila nous avons terminé le tutoriel pour ajouter une description à un item,

 

4] Bonus d'amélioration

a] pourvoir changer la touche

 

Alors pour changer la touche du keybinding il nous faut aller dans GameSettings.java et ajouter une variable d'un KeyBinding :

    public KeyBinding keyDescription;

Ensuite dans le constructeur GameSettings nous allons ajouter :

        this.keyDescription = new KeyBinding("Description Item", 42, "key.categories.misc"); // this.keyDescription = new KeyBinding("NOM", touche par défaut, "catégorie");

Ensuite nous voyons

        this.keyBindings = (KeyBinding[])((KeyBinding[])ArrayUtils.addAll(new KeyBinding[] {this.keyBindAttack, this.keyBindUseItem, this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindPlayerList, this.keyBindPickBlock, this.keyBindCommand, this.keyBindScreenshot, this.keyBindTogglePerspective, this.keyBindSmoothCamera, this.keyBindSprint}, this.keyBindsHotbar));

avec tout les keybinding, donc nous on va rajouter le notre comme ceci :

        this.keyBindings = (KeyBinding[])((KeyBinding[])ArrayUtils.addAll(new KeyBinding[] {this.keyDescription/* <---- */, this.keyBindAttack, this.keyBindUseItem, this.keyBindForward, this.keyBindLeft, this.keyBindBack, this.keyBindRight, this.keyBindJump, this.keyBindSneak, this.keyBindDrop, this.keyBindInventory, this.keyBindChat, this.keyBindPlayerList, this.keyBindPickBlock, this.keyBindCommand, this.keyBindScreenshot, this.keyBindTogglePerspective, this.keyBindSmoothCamera, this.keyBindSprint}, this.keyBindsHotbar));

Ensuite on va chercher l'autre constructeur GameSettings et on peu remarquer que c'est exactement la même chose donc tout simplement vous faire parreil !

Voila vous avez crée votre keyBinding mais maintenant il faut l'ajouter a notre code donc on retourne dans Item.java et notre if(Keyboard.isKeyDown(42)) va se transformer en

if(Keyboard.isKeyDown(Minecraft.getMinecraft().gameSettings.keyDescription.getKeyCode())) // on récupère la touche du keyBinding en int

Petit screen :

vuNWBdi.png

Mais maintenant il nous faut récupérer le nom de la touche pour que ça l'affiche en description au lieu de mettre un text simple.

Donc on va remplacer ce code :

par3List.add("Appuyez sur LSHIFT pour voir la description");

par ceci :

par3List.add("Appuyez sur " + Minecraft.getMinecraft().gameSettings.getKeyDisplayString(Minecraft.getMinecraft().gameSettings.keyDescription.getKeyCode()) /* on récupère le nom de la touche */ + " pour voir la description");

Et voilà ! Vous avez un keybinding fontionnel et stylay ! si je change le touche en A par exemple voici ce que ça donne :

7NroFNs.png

Merci d'avoir lu ce tutoriel et on se retrouve plus tard ! :)

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Une petite proposition pour améliorer ton tutoriel, rajouter une image ressource indiquant toutes les touches du clavier selon java, je sais pas si je m'exprime bien, et j'en suis navré mais une sorte de schéma que tu pourras trouver sur ton navigateur préféré(http://www.bing.com/ et pas autre chose, ok ? :p).

Et aussi rajouter une partie de, comment répertorier et changer cette touche dans le Gui(je sais plus son nom ;) ).

 

Voila voila, je te souhaite de passer une excellente soirée,

cordialement

moi

Partager ce message


Lien à poster
Partager sur d’autres sites

Essaye d'expliquer plus les codes que tu proposes, là c'est un peu trop "mettez ça là". Ensuite, dans Keyboard, tu as tous les codes des touches sous formes de constantes, pourquoi ne pas s'en servir ?

Je ne suis pas tellement partisan de l'utilisation de Keyboard dans Item.

Partager ce message


Lien à poster
Partager sur d’autres sites
@Wytrem et pourquoi donc ? :) si je-puis me permettre

Bien sûr que tu peux !

Item est un classe présente côté client et côté serveur :dans le code idéal ça devrait être exactement le même code qui fonctionne des deux côtés, et donc aussi sur le serveur où il n'y a pas lwjgl, donc pas de Keyboard. C'est plus une erreur de "conception" (car de toute manière le code de chaos va compiler et fonctionner au lancement).

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites
@Wytrem et pourquoi donc ? :) si je-puis me permettre

Bien sûr que tu peux !

Item est un classe présente côté client et côté serveur :dans le code idéal ça devrait être exactement le même code qui fonctionne des deux côtés, et donc aussi sur le serveur où il n'y a pas lwjgl, donc pas de Keyboard. C'est plus une erreur de "conception" (car de toute manière le code de chaos va compiler et fonctionner au lancement).

pas besoin de le mettre coté serveur ^^

 

EDIT : j'ai modifier des choses :)

Modifié par chaos90

Partager ce message


Lien à poster
Partager sur d’autres sites

pas besoin de le mettre coté serveur ^^

Oui, c'est pour ça que j'ai dit « dans le code idéal » ^^

 

EDIT : j'ai modifier des choses :)

Merci, c'est un peu mieux, je vais corriger quelques trucs qui restent. ;)

 

@Wytrem Merci :D

Avec plaisir !

Partager ce message


Lien à poster
Partager sur d’autres sites
 

Petite erreur, je pense :)

Sans titre.png

Merci j'ai corrigé ^^

 

Il y a plus beaucoup de suggestions donc si vous avez des choses a proposer en tutoriel, je veux bien les executer :)

Modifié par chaos90

Partager ce message


Lien à poster
Partager sur d’autres sites

Sympa, mais t'es pas obligé d'aller directement dans le Item.java, pour les items customs autant faire un objet à part et override la méthode.

Petit plus, pour ceux utilisant forge qui voudraient modifier la description sur un item vanilla, il existe un event : ItemTooltipEvent.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×