Ajouter effet à un item



  • Bonjour,

    J'ai crée mon item et j'aimerais savoir comment serait-il possible de faire lorsque l'on effectue un clic de souris sur l'item on ai un effet de potion.
    J'aimerais également savoir comment définir la durabilité de l'item.

    Merci d'avance.


  • Rédacteurs

    Plusieurs possibilités s'offre à toi selon comment tu veux le faire:

     /**
         * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return
         * True if something happen and false if it don't. This is for ITEMS, not BLOCKS
         */
        public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
        {
            return false;
        }
    
        /**
         * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
         */
        public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
        {
            return stack;
        }
    
        public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
        {
            return stack;
        } 
    


  • Pour la durabilité, il faut que tu mettes ça dans ton constructeur :

    
    this.setMaxDamage(int);
    
    


  • Merci parfait pour l'effet de soin.
    Par contre le "setMaxDamage" ne semble pas fonctionner. J'ai beau l'utilisé il ne se casse pas.
    Avez vous une solution ?


  • Administrateurs

    Il faut faire un stack.damageItem(entity, 1) lorsque tu l'utilises.



  • @'robin4002':

    Il faut faire un stack.damageItem(entity, 1) lorsque tu l'utilises.

    Stack et entity ne semblent pas être reconnu : stack cannot be resolved or is not a field


  • Administrateurs

    Non mais il faut le mettre au même endroit que là où tu fais l'effet …
    Donc soit dans la fonction onItemUse soit onItemRightClick soit onEaten. Et après si besoin faut remplacer entity par player.



  • @'robin4002':

    Non mais il faut le mettre au même endroit que là où tu fais l'effet …
    Donc soit dans la fonction onItemUse soit onItemRightClick soit onEaten. Et après si besoin faut remplacer entity par player.J

    J'ai mis ça : stack.damageItem(3, player);
    Mais l'item ne s'use pas. (j'ai inversé la valeur int et player car sinon ça affiche une erreur).


  • Administrateurs

    Possible, je ne connais par cœur toutes les fonctions.
    Par contre ça devrait fonctionner, les items de Minecraft utilise la même chose, c'est étrange.
    Tu as bien mit la fonction this.setMaxDamage(int); dans le constructeur ?



  • @'robin4002':

    Possible, je ne connais par cœur toutes les fonctions.
    Par contre ça devrait fonctionner, les items de Minecraft utilise la même chose, c'est étrange.
    Tu as bien mit la fonction this.setMaxDamage(int); dans le constructeur ?

    J'avais oublié merci bien 😉