MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    AddRecipe avec des items de son mod

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    10 Messages 2 Publieurs 1.2k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • FolganskyF Hors-ligne
      Folgansky Correcteurs
      dernière édition par

      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.

      1 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        new ItemStack(block, amount, meta)
        
        1 réponse Dernière réponse Répondre Citer 0
        • FolganskyF Hors-ligne
          Folgansky Correcteurs
          dernière édition par

          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.

          :::

          
          public class MachineStupRecipes
          {
          private static final MachineStupRecipes smeltingBase = new MachineStupRecipes();
          private Map <itemstack[], itemstack="">smeltingList = new HashMap<itemstack[], itemstack="">();
          
          public MachineStupRecipes()
          {
          this.addRecipe(new ItemStack(Modpg.itemPG, 1, 4),new ItemStack(Modpg.itemPG, 1, 5), new ItemStack(Modpg.itemPG, 1, 6), new ItemStack(Modpg.itemPG, 1, 1));
          this.addRecipe(new ItemStack(Modpg.itemPG, 1, 7),new ItemStack(Modpg.itemPG, 1, 8), new ItemStack(Modpg.itemPG, 1, 9), new ItemStack(Modpg.itemPG, 1, 2));
          this.addRecipe(new ItemStack(Modpg.itemPG, 1, 10),new ItemStack(Modpg.itemPG, 1, 11), new ItemStack(Modpg.itemPG, 1, 12), new ItemStack(Modpg.itemPG, 1, 3));
          }
          
          public void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3, ItemStack stack4)
          {
          ItemStack[] stackList = new ItemStack[]{stack1, stack2, stack3};
          this.smeltingList.put(stackList, stack4);
          }
          
                  public void addRecipe(Item item1, Item item2, Item item3, ItemStack stack)
          {
          this.addRecipe(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), stack);
          }
          
          // public void addRecipe(Block block1, Item item2, Item item3, ItemStack stack)
          // {
          // this.addRecipe(Item.getItemFromBlock(block1), item2, item3, stack);
          // }
          //
          // public void addRecipe(Block block1, Block block2, Item item3, ItemStack stack)
          // {
          // this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), item3, stack);
          // }
          //
          // public void addRecipe(Block block1, Block block2, Block block3, ItemStack stack)
          // {
          // this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), Item.getItemFromBlock(block3), stack);
          // }
          
                  @SuppressWarnings("rawtypes")
          public ItemStack getSmeltingResult(ItemStack[] stack)
              {
                  Iterator iterator = this.smeltingList.entrySet().iterator();
                  Entry entry;
          
                  do
                  {
                      if (!iterator.hasNext())
                      {
                          return null;
                      }
                         entry = (Entry)iterator.next();
                     }
                     while (!this.isSameKey(stack, (ItemStack[])entry.getKey()));
          
                     return (ItemStack)entry.getValue();
               }
          
                  private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
              {
              boolean isSame = false;
              for(int i=0; i<=2; i++)
              {
              if(stackList*.getItem() == stackList2*.getItem())
              {
              isSame = true;
              }
              else
              {
              return false;
              }
              }
              return isSame;
              }
          
                  @SuppressWarnings("rawtypes")
          public Map getSmeltingList()
              {
                     return this.smeltingList;
                  }
          
             public static MachineStupRecipes smelting()
              {
              return smeltingBase;
              }
          }
          }
          

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

          1 réponse Dernière réponse Répondre Citer 0
          • BrokenSwingB Hors-ligne
            BrokenSwing Moddeurs confirmés Rédacteurs
            dernière édition par

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

            1 réponse Dernière réponse Répondre Citer 0
            • FolganskyF Hors-ligne
              Folgansky Correcteurs
              dernière édition par

              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.

              1 réponse Dernière réponse Répondre Citer 0
              • BrokenSwingB Hors-ligne
                BrokenSwing Moddeurs confirmés Rédacteurs
                dernière édition par

                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;
                }
                
                
                1 réponse Dernière réponse Répondre Citer 0
                • FolganskyF Hors-ligne
                  Folgansky Correcteurs
                  dernière édition par

                  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)

                  1 réponse Dernière réponse Répondre Citer 0
                  • BrokenSwingB Hors-ligne
                    BrokenSwing Moddeurs confirmés Rédacteurs
                    dernière édition par

                    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

                    1 réponse Dernière réponse Répondre Citer 0
                    • FolganskyF Hors-ligne
                      Folgansky Correcteurs
                      dernière édition par

                      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.

                      1 réponse Dernière réponse Répondre Citer 0
                      • BrokenSwingB Hors-ligne
                        BrokenSwing Moddeurs confirmés Rédacteurs
                        dernière édition par

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

                        1 réponse Dernière réponse Répondre Citer 0
                        • 1 / 1
                        • Premier message
                          Dernier message
                        Design by Woryk
                        ContactMentions Légales

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB