Créer une amélioration pour une armure



  • Bonjour,

    J'aimerais créer un mod pour un serveur pour jouer entre potes avec de nouvelles armures a laquelle j'aimerais pouvoir ajouter des améliorations (vitesse, NightVision, JumpBoost…).
    J'aimerais que l'on puisse crafter un item, le mettre dans une machine spécial avec un morceau d'armure et que le morceau d'armure sorte avec l'amélioration.
    Ma question est la suivante: dois-je créer chaque armure en plusieurs fois ou y-a-t il un moyen simple de créer ce genre de modification, si oui quel genre de chose ?

    J'espère m'être bien exprimé, si vous ne comprennez pas, n'hésitez a me demander j'essaierais de faire un effort !

    Merci !



  • Tu as juste à crééer l'armure, puis rajouter les effets avec la fonction :

    
    @Override
    public void onArmorTick(World world, EntityPlayer player, ItemStack armor) {
        player.addPotionEffect(new PotionEffect(effet 1));
        player.addPotionEffect(new PotionEffect(effet 2));
        player.addPotionEffect(new PotionEffect(effet 3));
    }
    
    

    Ajoute juste une condition qui dit si oui ou non l'armure a été améliorée (des booléens par éxemple, définis dans la classe de ton armure en private), pas besoin d'en créer plusieurs !

    
    if(this.aEteAmelioree) 
        player.addPotionEffect….
    
    

    EDIT: Juste une note, le meilleur moyen de faire ça, c'est d'utiliser les NBTTags.



  • Je me sens bête, c’est tellement simple…

    Merci beaucoup !!


    Mais comme je suis un gros noob, j'effectue des double-post et je demande comment ajouter un NBTTag sur une armure grace a un utem et une machine...



  • Attention, les classes de type Item sont des "schémas", les variables à l'intérieur ne sont pas valable pour une armure en particulier mais toutes les armures de ce type.
    Un exemple pour illustrer mon propos :
    Tu créer un bâton avec une variable "cooldown" en clair dans ta classe, et bien cette variable sera commune à tout les items du jeu, donc si un joueur utilise un sort avec ton item et déclenche ce cooldown, tout les autres joueurs subiront le cooldown. Pour les variables propres aux items en particulier, il faut passer par les NBT (en fait tu stock tes variables dans un ItemStack et non un Item).
    Dans ce cas précis, si tu mets ton booléen en clair dans ta classe Item, lorsqu'une personne améliorera l'item, toutes les armures du jeux seront améliorées.
    Voilà voilà 🙂



  • @'Eikins':

    Attention, les classes de type Item sont des "schémas", les variables à l'intérieur ne sont pas valable pour une armure en particulier mais toutes les armures de ce type.
    Un exemple pour illustrer mon propos :
    Tu créer un bâton avec une variable "cooldown" en clair dans ta classe, et bien cette variable sera commune à tout les items du jeu, donc si un joueur utilise un sort avec ton item et déclenche ce cooldown, tout les autres joueurs subiront le cooldown. Pour les variables propres aux items en particulier, il faut passer par les NBT (en fait tu stock tes variables dans un ItemStack et non un Item).
    Dans ce cas précis, si tu mets ton booléen en clair dans ta classe Item, lorsqu'une personne améliorera l'item, toutes les armures du jeux seront améliorées.
    Voilà voilà 🙂

    Ah oui.. faudrait pas que j'oubli sa  😄

    Edit: Je ne sais pas appliqué un tag NBT a une armure, et je ne trouve pas comment faire. Qui a une petite explication rapide ?


  • Rédacteurs

    Il me semble pourtant avoir fait un tutoriel sur les NBT … https://www.minecraftforgefrance.fr/showthread.php?tid=4584



  • Ah oui merci, je ne l'avais pas trouvé…