• Moddeurs confirmés Modérateurs

    voila j’ai réussi a faire loot des item a mon bloc, mais j’aimerai lui en faire loot deux, mais cette méthode ne marche pas…

    public int idDropped(int metadata, Random rand, int fortune)
    {
       return MineralherbMain.coppermineralitem.itemID;
    }
    
    public int idDropped1(int metadata, Random rand, int fortune)
    {
       return MineralherbMain.pierrebruteitem.itemID;
    }
    
    public int quantityDropped(Random par1Random)
    {
    int randomloot;
    int lower = 1;
    int higher = 6;
    
    int random = (int)(Math.random() * (higher-lower)) + lower;
    return this.blockID == MineralherbMain.coppermineralitem.itemID ? 4 + par1Random.nextInt(3) : random;
    }
    
    public int quantityDropped1(Random par1Random)
    {
    int randomloot;
    int lower = 2;
    int higher = 8;
    
    int random = (int)(Math.random() * (higher-lower)) + lower;
    return this.blockID == MineralherbMain.pierrebruteitem.itemID ? 4 + par1Random.nextInt(3) : random;
    }
    

    comment faire?

  • Moddeurs confirmés

    Alors, petite leçon de java:
    La méthode quantityDropped(Random rand) n’est pas exécutée toute seule, c’est justement pour ça que la classe est extends Block, car dans la classe Block tu as exatement la même méthode qui elle, est exécutée par le jeu lui même, etc etc.
    Donc, créer un méthode avec juste un 1 dedans ne sera pas appelée sauf si tu l’appelle, ce qui ici n’est pas possible sans modification des classes de Minecraft.
    Il existe donc la méthode:

    public ArrayList <itemstack>getDrops(World world, int x, int y, int z, int metadata, int fortune)
    
    

    qui permet de dropper plusieurs items, pour l’utiliser tu créé une ArrayList d’ItemStack et tu lui ajoute les ItemStack que le bloc doit dropper:

    
    ArrayList <itemstack>ret = new ArrayList<itemstack>();
    ItemStack stack1 = new ItemStack(item1, 1);
    ItemStack stack2 = new ItemStack(item2, 1);
    ret.add(0, stack1);
    ret.add(1, stack2);
    return ret;
    
    

    A mettre dans la méthode.</itemstack></itemstack></itemstack>

  • Moddeurs confirmés Modérateurs

    ok merci je teste ca

    bon je n’ai pas du tout compris comme marche le public ArrayList<itemstack></itemstack>

  • Moddeurs confirmés

    public ArrayList <itemstack>getDrops(World world, int x, int y, int z, int metadata, int fortune)
    {
    ArrayList <itemstack>ret = new ArrayList<itemstack>();
    ItemStack stack1 = new ItemStack(item1, 1);
    ItemStack stack2 = new ItemStack(item2, 1);
    ret.add(0, stack1);
    ret.add(1, stack2);
    return ret;
    }
    ```</itemstack></itemstack></itemstack>
  • Moddeurs confirmés Modérateurs

    sa je sais mais du coup j’ai plein d’erreur et il veux me modifier du code dans block.java


  • Mais ça, sa marche.

    
    @Override
    public ArrayList <itemstack>getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
    {
    ArrayList <itemstack>ret = new ArrayList<itemstack>();
    ret.add(new ItemStack(Item.appleGold, 1, damageDropped(metadata)));
    ret.add(new ItemStack(Item.arrow, 1, damageDropped(metadata)));
    {
    return ret;
    }
    }
    
    

    “Item.arrow”, “Item.appleGold” = les items que tu veut dropper
    “1” = quantité dropper par chacun

    Si tu veut du random dit le moi et je te modifirai le code.</itemstack></itemstack></itemstack>

  • Moddeurs confirmés Modérateurs

    oui je veux du random, le minerai de cuivre: en 1 et 5 item et la pierre brute: entre 3 et 8


  • Le mieux que je peut te faire vite comme ça, c’est ceci:

    
    @Override
    public ArrayList <itemstack>getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
    {
    ArrayList <itemstack>ret = new ArrayList<itemstack>();
    for(int i = 0; 0 < world.rand.nextInt(3); i++)
    ret.add(new ItemStack(Item.appleRed, 1, damageDropped(metadata)));
    for(int i = 0; i < world.rand.nextInt(3); i++)
    ret.add(new ItemStack(Item.arrow, 1, damageDropped(metadata)));
    }
    return ret;
    }
    
    

    Le problème avec ce code c’est que tu peut aussi ne rien dropper. Joue avec les pourcentage et les randoms et tu arrivera peut-être à ce que tu veut.

    Je chercherai une autre solution quand j’aurai du temps :)</itemstack></itemstack></itemstack>

  • Moddeurs confirmés Modérateurs

    ok merci

    Syntax error on token “return”, invalid Type

  • Moddeurs confirmés

    world.rand, pour une instance de random

  • Administrateurs Rédacteurs Moddeurs confirmés

    @Override
    public ArrayList <itemstack>getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
    {
    ArrayList <itemstack>ret = new ArrayList<itemstack>();
    for(int i = 0; i < world.rand.nextInt(3) + 1; i++)
    ret.add(new ItemStack(Item.appleRed, 1, damageDropped(metadata)));
    for(int i = 0; i < world.rand.nextInt(3) + 1; i++)
    ret.add(new ItemStack(Item.arrow, 1, damageDropped(metadata)));
    return ret;
    }
    

    Pas de problème comme ça.</itemstack></itemstack></itemstack>

  • Moddeurs confirmés Modérateurs

    Pour l’item je met coppermineralitem ou coppermineralitem.itemID?


  • cheminItem.tonItem

    car comme tu peux le voire, y’a pas de .itemID dans les codes que l’on a fournis 😉

  • Moddeurs confirmés Modérateurs

    Je préféré demander. Mineralherb.Items.coppermineralitem?


  • Items.coppermineralitem

  • Moddeurs confirmés Modérateurs

    Daccord bha des que je go au pc je teste___
    bug: “coppermineralitem cannot be resolved or is not a field” je fait quoi?

    -create field
    ou
    -create constant?

  • Moddeurs confirmés Modérateurs

    ca marche.

    par contre ca drop 1 copper et 2 pierre. on peut pas ajouter un random?


  • De la part de Fireblade51: nom je n’ai pas réussi pour l’instant pour le drop aléatoire je le test dès que j’ai internet et du temps

  • Moddeurs confirmés Modérateurs

    Tu pourra lui dire que ce n’est plus la peine, j’ai réussi

  • Administrateurs Rédacteurs Moddeurs confirmés

    Il faut passer en résolu dans cas !