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

    Résolu Erreur sur Classe de recettes

    1.8.x
    1.8
    3
    9
    1559
    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.
    • Eryah
      Eryah dernière édition par

      Bonjour, c’est encore moi Eryah. Maintenant que mon bloc PlateCrafter est fait ( Encore bugué… Mias bon ), j’aimerai qu’il remplisse sa fonction : Transformer des lingots de fer/acier en plaques.
      J’ai deux méthodes en têtes

      • La méthode ‘LeederPrice’ : ClickEvent avec le lingot - Supprime le lingot, give une plaque
      • La méthode ‘normale’ : Un GUI, tu place ton lingot, t’a une plaque

      Pour chacune des deux, j’ai tenté… Et je suis pas allé loin.
      Je sais que c’est plutôt basique un ClickEvent, mais je ne trouve aucun block Minecraft de base qui rempli cette fonction.
      Pour la méthode normale, il y a bien la table de craft, mais il faut créer mon propre GUI, et ça… Plutôt dur.

      Si possible ( Rien est impossible, mais presque tout l’est a mon niveau), j’aimerai que le bloc fabrique des plaques seulement sous une impulsion redstone

      Je demande donc de l’aide pour soit la méthode ‘LeederPrice’, soit la normale
      Le code actuel

      package eryah.usefulthings.blocks;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockDirectional;
      import net.minecraft.block.BlockRedstoneWire;
      import net.minecraft.block.material.Material;
      import net.minecraft.block.properties.IProperty;
      import net.minecraft.block.properties.PropertyDirection;
      import net.minecraft.block.properties.PropertyEnum;
      import net.minecraft.block.state.BlockState;
      import net.minecraft.block.state.IBlockState;
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.resources.model.ModelResourceLocation;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.item.Item;
      import net.minecraft.util.BlockPos;
      import net.minecraft.util.EnumFacing;
      import net.minecraft.world.IBlockAccess;
      import net.minecraft.world.World;
      import net.minecraftforge.fml.common.registry.GameRegistry;
      import eryah.usefulthings.Reference;
      import eryah.usefulthings.UsefulthingsMod;
      
      public class PlateCrafter extends BlockDirectional {
      
         public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
      public static Block platecrafter;    
      
        public PlateCrafter(Material material)
         {
              super(material);
              this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
         }
      
      public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer)
         {
             return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
         }
      
         public IBlockState getStateFromMeta(int meta)
         {
             return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta));
         }
      
         public int getMetaFromState(IBlockState state)
         {
             return ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
         }
      
         protected BlockState createBlockState()
         {
             return new BlockState(this, new IProperty[] {FACING});
         }
      
      public static void init()
      {
      platecrafter = new PlateCrafter(Material.rock).setUnlocalizedName("platecrafter").setCreativeTab(UsefulthingsMod.UTTab);
      }
      
      public static void register()
      {
      GameRegistry.registerBlock(platecrafter, platecrafter.getUnlocalizedName().substring(5));
      }
      
      public static void registerRenders()
      {
      registerRender(platecrafter);
      }
      
      public static void registerRender(Block block)
      {
      Item item = Item.getItemFromBlock(block);
      Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Reference.MOD_ID + ":" + item.getUnlocalizedName().substring(5), "inventory"));
      }
      
      }
      
      

      Membre fantôme
      Je développe maintenant un jeu sur UnrealEngine4


      Contact :…

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

        Serais-tu myope ? Car j’ai l’impression que tu ne cherches jamais très loin…
        Google : click block
        Google : gui

        Voir même, encore plus près :
        (https://www.youtube.com/watch?v=CHw5ri-QU6o)

        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
        • Eryah
          Eryah dernière édition par

          Donc comme dit sur un autre topic, j’ai abandoné l’idée de faire un bloc sans TileEntity
          J’ai donc suivi ce tuto
          http://www.minecraftforgefrance.fr/showthread.php?tid=2017&highlight=type+four
          Et j’ai une erreur sur la classe des recettes
          Classe PlateCrafterRecipe

          package eryah.usefulthings.recipes;
          
          import java.util.HashMap;
          
          import net.minecraft.init.Blocks;
          import net.minecraft.init.Items;
          import net.minecraft.item.Item;
          import net.minecraft.item.ItemStack;
          
          import com.google.common.collect.Multiset.Entry;
          import com.ibm.icu.util.BytesTrie.Iterator;
          import com.sun.javafx.collections.MappingChange.Map;
          
          public class PlateCrafterRecipes {
          
          private static final PlateCrafterRecipes smeltingBase = new PlateCrafterRecipes(); //Permet d'instancier votre classe car vous le l'instancierez nul part ailleur
          private HashMap smeltingList = new HashMap(); //Ceci permet de mettre vos recettes
          
          public PlateCrafterRecipes()
          {
          this.addRecipe(Items.iron_ingot, new ItemStack(Blocks.diamond_block)); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
          }
          
          public void addRecipe(ItemStack stack1, ItemStack stack2) //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, stack1);
          }
          
                  public void addRecipe(Item item1, ItemStack stack) //1er cas
          {
          this.addRecipe(new ItemStack(item1), stack);
          }
          
                  public ItemStack getSmeltingResult(ItemStack[] stack) //En argument : un tableau avec le contenu des trois slots d'input
              {
                  java.util.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
               }
          
                  public Map getSmeltingList()
              {
                     return this.smeltingList;
                  }
          
             public static PlateCrafterRecipes smelting()
              {
              return smeltingBase;
              }
          
          }
          
          

          J’ai donc une erreur sur

          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
             }
          
                 public Map getSmeltingList()
            {
                    return this.smeltingList;
                 }
          
          • isSameKey - The method isSameKey(ItemStack[], ItemStack[]) is undefined for the type PlateCrafterRecipes - Me demande de crée la méthode
          • .getKey - The method getKey() is undefined for the type Multiset.Entry - me demande d’ajout un cast to ‘entry’
          • getValue - The method getValue() is undefined for the type Multiset.Entry - me demande d’ajout un cast to ‘entry’
          • this.smeltingList - Type mismatch: cannot convert from HashMap to MappingChange.Map - Me demande de Add Cast to Mash ; Change method return to ‘HashMap’ ; change type of ‘SmeltingList’ to Map

          Membre fantôme
          Je développe maintenant un jeu sur UnrealEngine4


          Contact :…

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

            Il te manque la fonction “isSameKey”, et ton remplace ton smeltingList : [size=small private Map smeltingList = new HashMap();]

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

              J’ai pas trop compris il fallait rempalcer quoi
              Mais j’ai bien corriger quelques erreurs

              Classe actuelle

              package eryah.usefulthings.recipes;
              
              import java.util.HashMap;
              
              import net.minecraft.init.Blocks;
              import net.minecraft.init.Items;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              
              import com.google.common.collect.Multiset.Entry;
              import com.sun.javafx.collections.MappingChange.Map;
              
              public class PlateCrafterRecipes {
              
              private static final PlateCrafterRecipes smeltingBase = new PlateCrafterRecipes(); //Permet d'instancier votre classe car vous le l'instancierez nul part ailleur
              private HashMap smeltingList = new HashMap(); //Ceci permet de mettre vos recettes
              
              public PlateCrafterRecipes()
              {
              this.addRecipe(Items.iron_ingot, new ItemStack(Blocks.diamond_block)); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
              }
              
              public void addRecipe(ItemStack stack1, ItemStack stack2) //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, stack1);
              }
              
                     public void addRecipe(Item item1, ItemStack stack) //1er cas
              {
              this.addRecipe(new ItemStack(item1), stack);
              }
              
                     public ItemStack getSmeltingResult(ItemStack[] stack) //En argument : un tableau avec le contenu des trois slots d'input
                {
                    java.util.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
                 }
              
                     public HashMap getSmeltingList()
                {
                        return this.smeltingList;
                     }
              
                public static PlateCrafterRecipes smelting()
                {
                return smeltingBase;
                }
              
                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<=2; i++) // Pour les 3 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;
              }
              
              }
              
              

              Membre fantôme
              Je développe maintenant un jeu sur UnrealEngine4


              Contact :…

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

                Mauvais imports :

                
                import com.google.common.collect.Multiset.Entry;
                import com.ibm.icu.util.BytesTrie.Iterator;
                import com.sun.javafx.collections.MappingChange.Map;
                

                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
                • Eryah
                  Eryah dernière édition par

                  Les erreus 
                  getValue
                  et getKey sont toujours là

                  package eryah.usefulthings.recipes;
                  
                  import java.util.HashMap;
                  
                  import net.minecraft.init.Blocks;
                  import net.minecraft.init.Items;
                  import net.minecraft.item.Item;
                  import net.minecraft.item.ItemStack;
                  import com.google.common.collect.Multiset.Entry;
                  import com.ibm.icu.util.BytesTrie.Iterator;
                  import com.sun.javafx.collections.MappingChange.Map;
                  
                  import com.google.common.collect.Multiset.Entry;
                  
                  public class PlateCrafterRecipes {
                  
                  private static final PlateCrafterRecipes smeltingBase = new PlateCrafterRecipes(); //Permet d'instancier votre classe car vous le l'instancierez nul part ailleur
                  private HashMap smeltingList = new HashMap(); //Ceci permet de mettre vos recettes
                  
                  public PlateCrafterRecipes()
                  {
                  this.addRecipe(Items.iron_ingot, new ItemStack(Blocks.diamond_block)); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche
                  }
                  
                  public void addRecipe(ItemStack stack1, ItemStack stack2) //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, stack1);
                  }
                  
                          public void addRecipe(Item item1, ItemStack stack) //1er cas
                  {
                  this.addRecipe(new ItemStack(item1), stack);
                  }
                  
                          public ItemStack getSmeltingResult(ItemStack[] stack) //En argument : un tableau avec le contenu des trois slots d'input
                      {
                          java.util.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
                       }
                  
                          public HashMap getSmeltingList()
                      {
                             return this.smeltingList;
                          }
                  
                     public static PlateCrafterRecipes smelting()
                      {
                      return smeltingBase;
                      }
                  
                     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<=2; i++) // Pour les 3 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;
                  }
                  
                  }
                  
                  

                  The method getKey() is undefined for the type Multiset.Entry
                  The method getValue() is undefined for the type Multiset.Entry

                  Membre fantôme
                  Je développe maintenant un jeu sur UnrealEngine4


                  Contact :…

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

                    T’y est toujours pas :

                    import com.google.common.collect.Multiset.Entry;
                    import com.ibm.icu.util.BytesTrie.Iterator;
                    import com.sun.javafx.collections.MappingChange.Map;
                    
                    import com.google.common.collect.Multiset.Entry;
                    

                    Il faut utiliser les imports de java. Il faut que tu y mettes du tiens si tu veux vraiment qu’on t’aide.

                    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
                    • Eryah
                      Eryah dernière édition par

                      Après avoir testé 5/6 des imports possible, j’ai enfin trouvé ceului qu’il faut c’est bon
                      ( Si il y a encore un problème… --’ ) Les Imports

                      ​import java.util.HashMap;
                      import java.util.Map.Entry;
                      
                      import net.minecraft.init.Blocks;
                      import net.minecraft.init.Items;
                      import net.minecraft.item.Item;
                      import net.minecraft.item.ItemStack;
                      

                      Membre fantôme
                      Je développe maintenant un jeu sur UnrealEngine4


                      Contact :…

                      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