• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Recipe aléatoire.

    1.7.x
    1.7.10
    4
    9
    1652
    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.
    • Flow
      Flow dernière édition par

      Bonjour , j’ai créer il y a peu une machine permettant d’obtenir un oeuf , a partir d’ADN et de sang de grenouille. Cependant j’aimerais que cette machine me donne un oeuf différent sachant qu’il y en a beaucoup. Je cherche donc un système pour ajouter plusieurs récipes pour les deux mêmes items , voici le code de mes recipes :

      package mod.common.block;
      
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      import java.util.Map.Entry;
      
      import mod.common.item.ItemRegister;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      
      @SuppressWarnings("rawtypes")
      public class AnalyzerRecipes {
      
      private static final AnalyzerRecipes smeltingBase = new AnalyzerRecipes(); //Permet d'instancier votre classe car vous le l'instancierez nul part ailleur
      private Map smeltingList = new HashMap(); //Ceci permet de mettre vos recettes
      
      public AnalyzerRecipes()
      {
      
      this.addRecipe(ItemRegister.itemADNofFrog, ItemRegister.itemSevewithmosquito, ItemRegister.itemEgg); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
      
      }
      
      @SuppressWarnings("unchecked")
      public void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3) //Cette fonction de comprend que des ItemStack, c'est celle qui ajoute les recettes à la HashMap
      {
      ItemStack[] stackList = new ItemStack[]{stack1, stack2};
      this.smeltingList.put(stackList, stack3);
      }
      
              public void addRecipe(Item item1, Item item2, Item item3) //1er cas
              {
      this.addRecipe(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3));
      
              }
      
              public ItemStack getSmeltingResult(ItemStack[] stack) //En argument : un tableau avec le contenu des trois slots d'input
          {
              Iterator iterator = this.smeltingList.entrySet().iterator();
              Entry entry;
      
              do
              {
                  if (!iterator.hasNext()) // Si il n'y a plus de recettes dans la liste
                  {
                      return null; //Il n'y a pas de recette correspondante
                  }
                     entry = (Entry)iterator.next(); //prend la recette suivante
                 }
                 while (!this.isSameKey(stack, (ItemStack[])entry.getKey())); //Check si le tableau passé en argument correspond à celui de la recette, vous avez une erreur ici, on crée la fonction tout de suite.
      
                 return (ItemStack)entry.getValue(); //retourne l'itemstack : resultat de la recette
           }
      
              private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2)
          {
          boolean isSame = false; //Au début ce n'est pas la même
          for(int i=0; i<=1; i++) // Pour les 2 items
          {
          if(stackList*.getItem() == stackList2*.getItem()) //On vérifie si ce sont les même
          {
          isSame = true; // Si c'est le cas alors isSame vaut true
          }
          else
          {
          return false; //Si un seul n'est pas bon, on cherche pas, c'est pas la bonne recette
          }
          }
          return isSame;
          }
      
              public Map getSmeltingList()
          {
                 return this.smeltingList;
              }
      
              public static AnalyzerRecipes smelting()
              {
              return smeltingBase;
              }
      }
      
      

      J’ai essayé en ajoutant une deuxieme recette au début comme ceci :

      this.addRecipe(ItemRegister.itemADNofFrog, ItemRegister.itemSevewithmosquito, ItemRegister.itemEgg2); 
      
      

      Sauf que la il ne me donne que la dernière ligne que j’ai mis donc il ne me donne que L’egg2 et pas l’egg 1 , je voulais faire avec if et else if mais je n’ai rien a mettre dans le if (???).

      Y a t-il avec minecraft une fonction avec if () avec fonction de chance donc 0.98% possible d’avoir l’egg 2 par exemple ?

      Merci à ceux qui m’aideront 🙂

      Oui ce gif est drôle.

      1 réponse Dernière réponse Répondre Citer 0
      • SCAREX
        SCAREX dernière édition par

        Tu peux créer une classe implements IRecipe qui te permettra de faire ce que tu veux avec les crafts.

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

          En effet, la fonction addRecipe ne te permet pas de faire ce que tu veux.

          1 réponse Dernière réponse Répondre Citer 0
          • Flow
            Flow dernière édition par

            J’ai essayé de voir avec les codes de Minecraft et ca a l’air compliqué , je débute donc j’ai essayé avec les codes etc mais c’est trop compliqué pour moi et je tiens vraiment a avoir plusieurs items en output 😕

            Oui ce gif est drôle.

            1 réponse Dernière réponse Répondre Citer 0
            • Flow
              Flow dernière édition par

              Désolé du double poste je ne fais que demander une chose je ne peut pas faire ca par exemple ?

              Random r = new Random();
              int i = 0 + r.nextInt(50 - 0);
              
              if (i > 5 && i < 10)
              {
              
              public AnalyzerRecipes()
              {
              
              this.addRecipe(ItemRegister.itemADNofFrog, ItemRegister.itemSevewithmosquito, ItemRegister.itemEgg); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
              
              }
              }
              
              else
              {
              public AnalyzerRecipes1()
              {
              
              this.addRecipe(ItemRegister.itemADNofFrog, ItemRegister.itemSevewithmosquito, ItemRegister.itemEgg2); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
              
              }
              }
              

              Oui ce gif est drôle.

              1 réponse Dernière réponse Répondre Citer 0
              • SCAREX
                SCAREX dernière édition par

                Non car ce sera à chaque initilaisation du jeux, regarde çà : http://www.minecraftforgefrance.fr/showthread.php?tid=2192

                Site web contenant mes scripts : http://SCAREXgaming.github.io

                Pas de demandes de support par MP ni par skype SVP.
                Je n'accepte sur skype que l…

                1 réponse Dernière réponse Répondre Citer 0
                • Flow
                  Flow dernière édition par

                  Arf donc si je fait ca ca risque de buger , car IRecipe a l’air complexe a mettre en place je vais d’abord m’occuper de mes autres problèmes , ma dimension , je ne passe pas en résolu j’aurais surement encore besoin d’aide pour ca 🙂

                  Oui ce gif est drôle.

                  1 réponse Dernière réponse Répondre Citer 0
                  • Myrilandel
                    Myrilandel dernière édition par

                    Salut Legrandfifou,

                    Je ne sais pas si depuis le temps tu as résolu ton problème, mais j’avais un soucis similaire que j’ai pu contourner de la façon suivante.

                    Plutot que de faire la même recette pour plusieurs items, pourquoi ne pas essayer de faire une recette unique qui te donnera par exemple un "Oeuf Mystère ", puis dans la classe de l’item Oeuf Mystère, appeler une méthode onItemRightClick qui return un Oeuf tiré aléatoirement dans une table ?
                    Ci-joint, un bout de mon code si jamais ça peut t’aider !

                    public class DoggyBag extends Item
                    {
                    public static final ItemStack new1 = new ItemStack(RegistryFood.ailerons_poulet);
                    public static final ItemStack new2 = new ItemStack(RegistryFood.biscuitFade);
                    public static final ItemStack new3 = new ItemStack(RegistryFood.chewingGums);
                    public static final ItemStack new4 = new ItemStack(RegistryFood.jambonBeurre);
                    public static final ItemStack new5 = new ItemStack(RegistryFood.napolitainsMoisis);
                    public static final ItemStack new6 = new ItemStack(RegistryFood.nouillesChinoises);
                    public static final ItemStack new7 = new ItemStack(RegistryFood.paquetChips);
                    public static final ItemStack new8 = new ItemStack(RegistryFood.petitsBeurres);
                    public static final ItemStack new9 = new ItemStack(RegistryFood.pims_perimes);
                    ItemStack[] DoggyBagTable = {new1,new2,new3,new4,new5,new6,new7,new8,new9};
                    
                    public DoggyBag()
                    {
                    this.setCreativeTab(CreativeTabs.tabMisc);
                    this.setMaxStackSize(1);
                    }
                    
                    @Override
                    public ItemStack onItemRightClick(ItemStack itemStack, World world,EntityPlayer player)
                    {
                    int lower = 0;
                    int higher = 9;
                    
                    int random = (int)(Math.random() * (higher-lower)) + lower;
                    
                    return DoggyBagTable[random];
                    }
                    }
                    

                    En espérant avoir pu t’aider au moins provisoirement !
                    Bonne fin d’après midi,
                    Myrilandel

                    1 réponse Dernière réponse Répondre Citer 0
                    • Flow
                      Flow dernière édition par

                      Salut Myrilandel , wow j’ai totalement résolu le problème depuis longtemps et j’ai oublié de passer en résolu mais ca s’avère utile pour ceux qui recherche la fonction 🙂

                      Oui ce gif est drôle.

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

                      MINECRAFT FORGE FRANCE © 2018

                      Powered by NodeBB