Référencer plusieur items dans une recette



  • Bonjour.

    Je souhaite créer une recette avec pour certains emplacements, plusieurs items possibles, comme dans les recettes qui demandent du bois.

    Pour une meilleure précision dans ces recettes on peut utiliser du bois de sapin avec du bois de chêne le programme ne fait pas la différence, alors que ces items sont différents.

    Techniquement ces items ne sont pas différents c'est le même item avec une méta-data différente.

    Pour moi le système des recettes prend bien en compte plusieurs items dans la recette.

    Il ne génère pas une série de recettes pour qu'on puisse faire le craft comme bon nous semble.

    J'ai cherché un moment dans le code, mais je nais pas compris comment c'était possible même avec les méta data.

    Pour voir les recettes de mon mod j'utilise le mod "NotEnoughItems".

    Infos : je code sous forgeSrc-1.7.10-10.13.2.1291
    mcp{9.05} [Minecraft Coder Pack]
    FML{7.10.85.1291} [Forge Mod Loader]
    Forge{10.13.2.1291} [Minecraft Forge]
    CodeChickenCore{1.0.4.35} [CodeChicken Core]
    NotEnoughItems{1.0.3.78} [Not Enough Items]

    Correction http://www.reverso.net


  • Administrateurs

    Il suffit d'enregistrer plusieurs recettes. Ou alors tu peux faire des recettes en mettant OreDictionary.WILDCARD_VALUE comme metadata pour prendre tous les metadatas d'un bloc (c'est que Minecraft utilise pour prendre tous les types de bois).



  • Je me suis surement mal fais comprendre.

    Je souhaite créer une recette qui utilise plusieurs items qui non seulement qui ont des méta-datas différent, mais également des id différends.

    - Pour le fait d'utiliser plusieurs recettes ça fait un sacré bordel dans mon code.
    Quand on regarde avec "NotEnoughItems", on peut voir l’apocalypse dans la liste des recettes.
    Si je devais me résigner à cette méthode pour mes recettes se représente : ( 2^8)*8 = 2048 recettes !
    Je ne peux pas faire ça .
    Se la va surcharger minecraft ! est détruit mon ordi  ❗

    - OreDictionary.WILDCARD_VALUE
    Je ne suis pas sur de comprendre ce que vous avez voulu me faire comprendre.
    Avec

        @EventHandler
        public void init(FMLInitializationEvent event)
        {
              GameRegistry.addRecipe(new ItemStack(itemsResult), new Object[] {"##", "##X", '#', BlocMéta, 'X', Items.stick});
              proxy.registerRender();
        }
    

    J’obtiens bien tout les combinaison possible de BlocMéta Qui est un block qui possède plusieurs méta donnée.

    Je voudrais déclarée une liste item à la place de BlocMéta. Par Exemple de la roche, de la roche tailler et mon BlocMéta;
    Pour infos dans ce craft sa fais 3^4 = 81 recettes !


  • Administrateurs

    Non,

              GameRegistry.addRecipe(new ItemStack(itemsResult), new Object[] {"##", "##X", '#', BlocMéta, 'X', Items.stick});
    

    ne va que prendre le metadata 0. Alors que

              GameRegistry.addRecipe(new ItemStack(itemsResult), new Object[] {"##", "##X", '#', new ItemStack(blocMeta, 1, OreDictionary.WILDCARD_VALUE), 'X', Items.stick});
    

    va prendre en compte tous les metadatas.

    Le seul moyen de ne pas enregistrer 2048 recettes est de passer par un IRecipe.


  • Correcteurs



  • Mas syntaxe est correct est prend en compte les méta data de mon items enfin de mon itemBloc pour être précis j’ai revue mon code est sa marche.
    Si sa n'a pas fonctionner chez toi c'est peut-être due à ta version de Minecraft ou de forge je ne dis pas de bêtise si tu veut je t’envoie un code avec mas version,mais de tout façon j'ai indiquer les versions que j'utilise pour mon mod.

    Sinon merci d’avoir répondue si vite .
    j espère arrivez à crée mas recette .
    Je vais suivre le tuto sur les IRecipe .

    J'aurais aimez que tu m'indique la page car j’ai un peut galéré pour la trouvez.

    Heu je clos comment le sujet pour qu 'il sois marquez résolue ?


  • Correcteurs

    La page? C'est le premier post.


  • Administrateurs

    Il faut éditer le post pour ajouter la balise.
    Et si tu arrives à craft avec tous les metadatas avec le code que tu as envoyé, c'est que tu as foiré quelque chose dans ton bloc avec metadata (il te manque surement la fonction getMedata dans l'item bloc).



  • Foiré quelque chose dans mon bloc metadata ?

    Je n’en suis pas si sur.

    Pour crée mes bloc-meta j'ai en plus de suivie les tutoriel en ligne j'ai vérifiez les codes fournie par forge.

    Pour la class BlockColored il n'y à pas de méthode getMedata donc je ne l'ai pas mis mais mas class semble très bien fonctionner.

    Mais tu à raison je n'ai pas mis cette méthode.

    Pour me justifiez je me retrouve de temps en temps à suivre des tutoriel parfois trop vieux est je vois que le code ne fonction plus sur la version sur la quelle je code.

    J'ai donc tendance à plus me fier aux code don je dispose. est de plus lire les tutoriel pour m’aiguiller.


  • Administrateurs

    La fonction getMedata est sensé être dans l'itembloc et non dans le bloc.



  • Heu désolée il y a bien dans l'itemblock la méthode getMetadata

        public int getMetadata(int p_77647_1_)
        {
            return p_77647_1_;
        }
    

    Bon mon problème est résolue de puis que je sais que je dois utiliser IRecipe donc bonne nuit .