MFF

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

    Crash Custom Furnace

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    3 Messages 2 Publieurs 1.3k 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.
    • sosohS Hors-ligne
      sosoh
      dernière édition par

      Bonjour, j’ai suivis le tutoriel de bodri afin de faire un nouveau four (ici un chaudron), je voudrais pouvoir créer des recettes a 5 ingrédients et d’autres a moins. J’enregistre alors mes recettes a moins de 5 ingrédients avec des “null” pour dire que le slot doit être vide, mais je crash:

      0
      
      1
      2
      3
      4
      5
      [16:41:45] [Server thread/ERROR]: Encountered an unexpected exception
      net.minecraft.util.ReportedException: Ticking block entity
      at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:709) ~[MinecraftServer.class:?]
      at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:614) ~[MinecraftServer.class:?]
      at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
      at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:485) [MinecraftServer.class:?]
      at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) [MinecraftServer$2.class:?]
      Caused by: java.lang.NullPointerException
      at fr.sosoh.hogsmod.common.recipes.CauldronRecipes.isSameKey(CauldronRecipes.java:66) ~[CauldronRecipes.class:?]
      at fr.sosoh.hogsmod.common.recipes.CauldronRecipes.getSmeltingResult(CauldronRecipes.java:55) ~[CauldronRecipes.class:?]
      at fr.sosoh.hogsmod.common.blocks.tileentity.TileEntityCauldron.canSmelt(TileEntityCauldron.java:196) ~[TileEntityCauldron.class:?]
      at fr.sosoh.hogsmod.common.blocks.tileentity.TileEntityCauldron.updateEntity(TileEntityCauldron.java:211) ~[TileEntityCauldron.class:?]
      at net.minecraft.world.World.updateEntities(World.java:2160) ~[World.class:?]
      at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:515) ~[WorldServer.class:?]
      at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703) ~[MinecraftServer.class:?]
      … 4 more
      

      Voila ma classe:
      :::

      ​package fr.sosoh.hogsmod.common.recipes;
      
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      import java.util.Map.Entry;
      
      import fr.sosoh.hogsmod.common.Hogsmod;
      import net.minecraft.block.Block;
      import net.minecraft.init.Blocks;
      import net.minecraft.init.Items;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      
      public class CauldronRecipes {
      
      private static final CauldronRecipes smeltingBase = new CauldronRecipes();
      private Map smeltingList = new HashMap();
      
      public CauldronRecipes()
      {
      this.addRecipe(Hogsmod.itemBottle, Items.coal, Items.apple, Items.apple, Items.apple, null, null, new ItemStack(Blocks.diamond_block));
      }
      
      public void addRecipe(ItemStack bottle, ItemStack coal, ItemStack ingredient1, ItemStack ingredient2,
      ItemStack ingredient3, ItemStack ingredient4, ItemStack ingredient5, ItemStack result) //Cette fonction de comprend que des ItemStack, c'est celle qui ajoute les recettes à la HashMap
      {
      ItemStack[] stackList = new ItemStack[]{bottle, coal, ingredient1, ingredient2, ingredient3, ingredient4, ingredient5};
      this.smeltingList.put(stackList, result);
      }
      
          public void addRecipe(Item bottle, Item coal, Item item1, Item item2, Item item3, Item item4, Item item5, ItemStack result) //Coal is item
      {
      this.addRecipe(new ItemStack(bottle), new ItemStack(coal), new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), new ItemStack(item4), new ItemStack(item5), result);
      }
      
          public void addRecipe(Item bottle, Block coal, Item item1, Item item2, Item item3, Item item4, Item item5, ItemStack result) //Coal is block
      {
      this.addRecipe(new ItemStack(bottle), new ItemStack(Item.getItemFromBlock(coal)), new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), new ItemStack(item4), new ItemStack(item5), result);
      }
      
      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;
      for(int i=0; i<=6; i++)
      {
      System.out.println(i);
      if(stackList*.getItem() == stackList2*.getItem())
      {
      isSame = true;
      }
      else
      {
      return false;
      }
      }
      return isSame;
      }
      
      public Map getSmeltingList()
      {
             return this.smeltingList;
          }
      
      public static CauldronRecipes smelting()
      {
      return smeltingBase;
      }
      }
      

      :::

      Merci de votre aide 🙂

      Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

        Le copié-collé est une TRES TRES TRES TRES mauvaise idée premièrement.

        Deuxièmement, essaye avec çà :

        
        if(stackList* != null && stackList2* != null && stackList*.getItem() == stackList2*.getItem())
        {
        isSame = true;
        }
        else
        {
        return false;
        }
        
        

        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
        • sosohS Hors-ligne
          sosoh
          dernière édition par

          J’ai copié collé mais j’ai compris les méthodes, tu peux voir que les méthodes sont différentes car ce que je veux est différent, après les méthodes communes sont les mêmes… Avec ce code ça ne crash plus et ça ne cuit pas non plus 😕 J’ai reussi:

          ​if(stackList* == null && stackList2* == null)
          
          {
          isSame = true;
          }
          else if(stackList* != null && stackList2* != null && stackList*.getItem() == stackList2*.getItem())
          {
          isSame = true;
          }
          else
          {
          return false;
          }
          

          Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

          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