AddRecipe avec des items de son mod


  • Correcteurs

    Bonjour, Bonsoir,

    Je tente actuellement de faire des recettes pour une machine type four.

    J'aimerais faire une recette comprenant des items de mon mod, seulement je ne sais pas comment faire pour que ce soit le bon metadata. 
    Je sais juste faire Monmod.itemMod… Comme ça:

    this.addRecipe(Mod.itemMod, Mod.itemMod, Mod.itemMod, new ItemStack(Mod.itemMod));
    

    Ce qui me crafte Mod.itemMod de metadata 0 "évidemment".

    Quelle est la bonne notation svp.


  • Rédacteurs

    new ItemStack(block, amount, meta)
    

  • Correcteurs

    Simple, Rapide et Efficace.
    Merci pour cette réponse.

    Edit:

    Par contre j'ai un problème pour le recette en elle même.
    N'importe quel metadata de l'item me retourne toujours comme résultat l'item metadata 0.

    Où est ce que je peux préciser qu'il faut vérifier le matadata de l'item dans mon code svp.

    </itemstack[],></itemstack[],>


  • Rédacteurs

    Il faut que tu modifie la fonction isSameKey(ItemStack[], ItemStack[]) de façon à check aussi le metadata


  • Correcteurs

    Je ne sais malheureusement pas faire ça justement x]

    C'est un truc qui permettrait de compléter ton tuto d'ailleurs, je suppose que d'autres personnes auront ce type de questions.

    ps: Après je pourrais m'amuser à mettre des ", metadata" partout jusqu'à trouver où ça fonctionne mais j'aimerais plutôt comprendre comment intégrer cet argument.


  • Rédacteurs

    Bah, je t'envoi ça dans pas longtemps mais sans tester, tu me dira si ça marche

    EDIT :

    
    private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
    {
    boolean isSame = false;
    for(int i = 0; i < TileEntityMachinePala.INPUT_SLOTS; i++)
    {
    if(stackList*.getItem() == stackList2*.getItem() && stackList*.getItemDamage() == stackList2*.getItemDamage())
    {
    isSame = true;
    }
    else
    {
    return false;
    }
    }
    return isSame;
    }
    
    

  • Correcteurs

    Mmmh, ça demande de créer un field dans la classe de le TileEntity de la machine (que j'ai mis au nom du mien ici, au cas où tu demandes).
    Mais ça ne semble rien changer, enfin si, aucun craft ne fonctionne.

    EDIT:

    Rectification, ça fonctionne, j'avais juste à ne pas remettre la partie Input qui doit être propre à ta façon d'utiliser ta machine.

    Je te remercie pour ces précieuses précisions quand à cette condition sur les metadata des items.

    (ps: en bonus à ton tuto, ça a sa place je pense)


  • Rédacteurs

    C'est ma faute je me suis trompé de classe à modifier, remplace TileEntityMachinePala.INPUT_SLOTS par le nombre de slots que tu as en input, c'est 3 dans ton cas il me semble


  • Correcteurs

    Au final j'ai mis comme ça et tout fonctionne.

    private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
        {
        boolean isSame = false;
        for(int i=0; i<=2; i++)
        {
        if(stackList*.getItem() == stackList2*.getItem() && stackList*.getItemDamage() == stackList2*.getItemDamage())
        {
        isSame = true;
        }
        else
        {
        return false;
        }
        }
        return isSame;
        }
    

    J'ai laissé i<=2 comme dans ton tuto.

    Je pense pouvoir passer en résolu.


  • Rédacteurs

    Oui, en fait il y avait que la condition à changer