Il reste moins de 24h pour s'inscrire à la MFFJam !

Seau random



  • Bonjour j'aimerai créer un seau de feu qui quand on fait un click droit sur la lave a 1/10 de chance de transformer le seau en seau avec un minerais dedans et9 /10 de  chance de transformer le seau en seau avec des débris comment faire?



  • tu crées plusieurs seaux et dans le code tu mets un random, qu'est-ce qu'il te manque ?



  • @'SCAREX':

    tu crées plusieurs seaux et dans le code tu mets un random, qu'est-ce qu'il te manque ?

    Ba comment faire pour tt sa ?? Je suis nouveau alors je connais aucune methodes qui font sa[emoji28] et puis pour que quand tu fasse clik droit sa te donne autre chose que de la lave



  • Bah voici la fonction à placer dans la classe de ton item:

    
    public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_)
    {
    Block var11 = p_77648_3_.getBlock(p_77648_4_, p_77648_5_, p_77648_6_);
    if (p_77648_2_.canPlayerEdit(p_77648_4_, p_77648_5_, p_77648_6_, p_77648_7_, p_77648_1_) && var11 == Blocks.lava)
    {
    Random rand = new Random();
    int randomNumber = rand.nextInt(10 + 1);//laisse le + 1 car cette fonction va habituellement de 0 jusqu'au nombre entré en commentaire - 1\. Le +1 exclut donc le 0 et permet d'aller jusqu'au nombre
    if(!p_77648_2_.worldObj.isRemote)
    {
    if(randomNumber == 1)
    p_77648_2_.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecMinerais));
    else
    p_77648_2_.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecDebris));
    }
    p_77648_1_.stackSize–;
    return true;
    }
    else
    {
    return false;
    }
    }
    
    


  • @'Plaigon':

    Bah voici la fonction à placer dans la classe de ton item:

    
    public boolean onItemUse(ItemStack p_77648_1_, EntityPlayer p_77648_2_, World p_77648_3_, int p_77648_4_, int p_77648_5_, int p_77648_6_, int p_77648_7_, float p_77648_8_, float p_77648_9_, float p_77648_10_)
    {
    Block var11 = p_77648_3_.getBlock(p_77648_4_, p_77648_5_, p_77648_6_);
    if (p_77648_2_.canPlayerEdit(p_77648_4_, p_77648_5_, p_77648_6_, p_77648_7_, p_77648_1_) && var11 == Blocks.lava)
    {
    Random rand = new Random();
    int randomNumber = rand.nextInt(10 + 1);//laisse le + 1 car cette fonction va habituellement de 0 jusqu'au nombre entré en commentaire - 1\. Le +1 exclut donc le 0 et permet d'aller jusqu'au nombre
    if(!p_77648_2_.worldObj.isRemote)
    {
    if(randomNumber == 1)
    p_77648_2_.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecMinerais));
    else
    p_77648_2_.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecDebris));
    }
    p_77648_1_.stackSize–;
    return true;
    }
    else
    {
    return false;
    }
    }
    
    

    Merci mec tu gère j'aurai jamais réussi tt seul [emoji28] mais juste pour comprendre ce que je fait pk y a plein de variable déclarer au début et elle ne serve pas toute après ?



  • Elles servent pas dans notre cas mais dans d'autres elles pourraient.
    Si tu n'as pas d'autre question, pense à mettre la balise résolue 😉


  • Administrateurs

    Mieux comme ça :

      public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
      {
          Block block = world.getBlock(x, y, z);
          if (player.canPlayerEdit(x, y, z, side, stack) && block == Blocks.lava)
          {
           Random rand = new Random();
           int randomNumber = rand.nextInt(10);
           if(!world.isRemote)
           {
           if(randomNumber == 0)
               player.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecMinerais));
           else
               player.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecDebris));
           }
           stack.stackSize–;
           return true;
          }
          else
          {
          return false;
          }
      }
    

    Les variables en question sont en fait utilisées dans d'autres cas, on est obligé de les mettre même si non utilisé car sinon la fonction n'est plus la même est donc elle n'est plus appelée.



  • @'robin4002':

    Mieux comme ça :

      public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
      {
          Block block = world.getBlock(x, y, z);
          if (player.canPlayerEdit(x, y, z, side, stack) && block == Blocks.lava)
          {
           Random rand = new Random();
           int randomNumber = rand.nextInt(10);
           if(!world.isRemote)
           {
           if(randomNumber == 0)
               player.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecMinerais));
           else
               player.inventory.addItemStackToInventory(new ItemStack(TonMod.tonSeauAvecDebris));
           }
           stack.stackSize–;
           return true;
          }
          else
          {
          return false;
          }
      }
    

    Les variables en question sont en fait utilisées dans d'autres cas, on est obligé de les mettre même si non utilisé car sinon la fonction n'est plus la même est donc elle n'est plus appelée.

    Je peux utiliser se code là a la place de l'autre?Et a quoi sert stack.stackSize–



  • stack.stackSize–;
    stack, c'est l' itemstack actuellement tenu par le joueur.
    La variable stackSize, c'est tout simplement la taille de l'itemstack.
    Et on en soustrait 1 unité grâce au signe --, symbole de la décrémentation en Java.
    En gros après avoir fait clic droit sur de la lave avec le seau de feu en main, tu auras récolté un nouveau seau et tu auras en échange perdu le seau de feu.


  • Administrateurs

    C'est exactement le code de Plaigon mais avec des noms de variable plus explicite 😉
    La seule autre chose que j'ai changé c'est le random, rand.nextInt(10) génère un nombre entre 0 inclut et 10 exclut, donc ça fait déjà 10 possibilité (0, 1, 2, 3, 4, 5, 6, 7, 8 et 9), pas besoin de +1.



  • @'robin4002':

    C'est exactement le code de Plaigon mais avec des noms de variable plus explicite 😉
    La seule autre chose que j'ai changé c'est le random, rand.nextInt(10) génère un nombre entre 0 inclut et 10 exclut, donc ça fait déjà 10 possibilité (0, 1, 2, 3, 4, 5, 6, 7, 8 et 9), pas besoin de +1.

    pour la class je fait un extends de seau ou sinon un extends de quoi?.



  • Bah t'as pas besoin de faire un extends ItemBucket. Après si tu voulais juste que ton item ait les propriétés énoncés lors de ton poste, à savoir n'interagir qu'avec de la lave et donner des item en échange, alors NON pas besoin d'extends ItemBucket. Un simple extends Item suffira.



  • @'Plaigon':

    Bah t'as pas besoin de faire un extends ItemBucket. Après si tu voulais juste que ton item ait les propriétés énoncés lors de ton poste, à savoir n'interagir qu'avec de la lave et donner des item en échange, alors NON pas besoin d'extends ItemBucket. Un simple extends Item suffira.

    Okay merci  😉



  • Désolé pour le double post mais vs pouvez mettre le sujet en résolu

    Envoyé de mon 6039Y en utilisant Tapatalk



  • Tu peux le faire toi même en éditant le premier message du topic et en changeant la balise 🙂



  • @'Plaigon':

    Tu peux le faire toi même en éditant le premier message du topic et en changeant la balise 🙂

    Je peux pas chui sur mon tel



  • Tu peux je lai déjà fait sur tel



  • @'AymericRed':

    Tu peux je lai déjà fait sur tel

    J'y arrive pas[SMILING FACE WITH OPEN MOUTH AND COLD SWEAT]

    Envoyé de mon 6039Y en utilisant Tapatalk


  • Administrateurs

    Je m'en charge.



  • @'robin4002':

    Je m'en charge.

    Merci[emoji4]

    Envoyé de mon 6039Y en utilisant Tapatalk