Problème de Barre d'énergie



  • Bonjour !,
    J'ai un petit problème : j'ai créé une variable (un double) qui stocke un nombre a virgule pour l'affichage de la barre d'énergie de mon épée électrique (la barre d'énergie = barre de durabilité)

    
    @Override
        public double getDurabilityForDisplay(ItemStack stack)
        {
            return energybar; // il faut un nombre compris entre 0 et 1
        }
        @Override
        public boolean showDurabilityBar(ItemStack stack)
        {
            return true; //Le problème étant que la barre de vie est commune (= si je prends une épée qui est pleine d'énergie ,il y aura un interférence et toutes les épées que j'ai dans mon inventaire auront la barre de vie de l'épée la plus récente
        }
    
    

    le problème est que la variable est réinitialisé a 0 a chaque fois que je lance mon minecraft et toutes les épées que j'ai dans mon inventaire on la barre de vie de l'épée la plus récente !

    HELP !  😞


  • Administrateurs

    Salut,
    Il faudrait plutôt utiliser un tag nbt pour avoir de la persistance.



  • Je sais mais j'ai le problème de la barre de vie : "[font=monospace/Le problème étant que la barre de vie est commune (= si je prends une épée qui est pleine d'énergie ,il y aura un interférence et toutes les épées que j'ai dans mon inventaire auront la barre de vie de l'épée la plus récente]"



  • Je n'ai pas vraiment compris ton message. Mais je suspecte que tu ais une variable static là-dedans.



  • 
    @Override
        public double getDurabilityForDisplay(ItemStack stack)
        {
            return stack.getTagCompound().getDouble("energybar1");
        }
        @Override
        public boolean showDurabilityBar(ItemStack stack)
        {
            return true;
        }
    
    

    j'ai un crash a cause "return stack.getTagCompound().getDouble("energybar1");"


  • Administrateurs

    stack.getTagCompound() renvoies null par défaut.
    Il faut d'abord l'initialiser.

    if(!stack.hasTagCompound())
    {
    stack.setTagCompound(new NBTTagCompound());
    }
    


  • J'avais oublié ici …. Merci !  😄