MFF

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

    Rajouté une durabilité un item lors d'un craft

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

      j’ai trouvé ça mais bon je suis entrain de testé

      @Override
      public void takenFromCrafting(EntityPlayer player, ItemStack item, IInventory matrix)
      {
      for(int i=0; i<matrix.getsizeinventory(); i++)<br="">{
      if(matrix.getStackInSlot(i) != null)
      {
      ItemStack itemnew = matrix.getStackInSlot(i);
      if(itemnew != null && itemnew.getItem() == Item.pickaxeDiamond)
      {
      ItemStack k = new ItemStack(Item.pickaxeDiamond, 2);
      k.damageItem(itemnew.getItemDamage() + 1, player);
      matrix.setInventorySlotContents(i, k);
      }
      }
      }
      }
      ```</matrix.getsizeinventory();>
      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        La question a déjà été posé.
        http://www.minecraftforgefrance.fr/showthread.php?tid=1594&highlight=getContainerItem
        Pour l’usure il faut passer par la fonction damageItem et ajouter un certains damage à l’outil (regarde la classe ItemTool de mc)

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

          Merci mille fois j’ai regardé pourtant sur le forum avant de posé ma question mais je crois ne pas avoirs bien cherché je serais plus attentives a l’avenir

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

            public class ItemShardIron extends Item {
            
            public void damageItem() {setMaxDamage(10);}
            
            public ItemStack getContainerItem(ItemStack itemStack)
               {
                   return new ItemStack(this);
               }
               public boolean hasContainerItem(ItemStack stack)
               {
                   return true;
               }
            public boolean doesContainerItemLeaveCraftingGrid(ItemStack stack)
            {
            return false;
            }
            }
            
            

            voila j’ai rajouté tout comme il faut mais l’items ne s’use pas je cherche de mon coté mais bon

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

              Le setMaxDamage devrait être dans le constructeur :

              public ItemShardIron()
              {
                 this.setMaxDamage(10);
              }
              

              Pour faire qu’il s’use il faut utiliser la fonction damageItem, pour ça il faudrait passer par l’event de craft.

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

                GameRegistry.addRecipe(new ItemStack (Pickaxe_flint), new Object []{"FFF",
                "IS ",
                " S "
                
                ,'F', Items.flint,'S',Items.stick,'I',itemShardIron,
                
                });
                

                tu parle de cette event de craft ??? je suis un peux perdu même beaucoup j’ai testé de rajouté le damageItem a suite itemShardIron avec une valeur positifs et une valeur négative rien ne marche j’ai testé de le mettre dans la classe de l’item ou il se passe que l’items ne se consomme pas rien se passe

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

                  Non pas du tout, un event c’est ça : http://www.minecraftforgefrance.fr/showthread.php?tid=716 pas un GameRegistry …
                  L’event en question est cpw.mods.fml.common.gameevent.PlayerEvent.ItemCraftedEvent
                  C’est un event de fml, donc a enregistrer avec :
                  FMLCommonHandler.instance().bus().register(new ClasseAvecTousVosEvent());

                  Et dedans tu ajoutes cette fonction :

                  @SubscribeEvent
                  public void onCraft(PlayerEvent.ItemCraftedEvent event)
                  {
                  for(int i =0; i < event.craftMatrix.getSizeInventory(); i++)
                  {
                  ItemStack stack = event.craftMatrix.getStackInSlot(i);
                  if(stack != null && stack.getItem() == ClassePrincipale.tonItem)
                  {
                  stack.damageItem(1, event.player);
                  }
                  }
                  }
                  

                  Importes bien cpw.mods.fml.common.gameevent.PlayerEvent et non net.minecraftforge.event.entity.player.PlayerEvent !

                  Et ton item qui s’use c’est itemShardIron ?
                  Si oui, dans le code de ton craft remplace itemShardIron par new ItemStack(itemShardIron,1, OreDictionary.WILDCARD_VALUE)
                  (pour faire en sorte que le craft fonctionne avec tout les metadatas, sinon il ne fonctionnera que quand l’outil est 100 % neuf).

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

                    Je teste ça de se pas et oui hier je me suis penché sur les events pour palier a mon problemes mais j’avais le morceau de code que tu a filais plus haut

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

                      j’ai tout bien fais comme tu me la dit avec l’aide isador nous avons testé de mettre un petit bout de code pour voir ce qui ne va pas

                      public void onCraft(PlayerEvent.ItemCraftedEvent event) {
                      for (int i = 0; i < event.craftMatrix.getSizeInventory(); i++) {
                      ItemStack stack = event.craftMatrix.getStackInSlot(i);
                      if (stack != null && stack.getItem() == SandBoxMod.itemShardIron) {
                      System.out.println("valeur de la durablitité: "
                      + stack.getItemDamage());
                      
                      stack.damageItem(1, event.player);
                      System.out.println("valeur de la durablitité: "
                      + stack.getItemDamage());
                      }
                      }
                      
                      [20:28:38] [Client thread/INFO] [STDOUT]: [fr.sandbox.EventHandlerCraft:onCraft:15]: valeur de la durablitité: 0
                      [20:28:38] [Client thread/INFO] [STDOUT]: [fr.sandbox.EventHandlerCraft:onCraft:19]: valeur de la durablitité: 1
                      [20:28:38] [Server thread/INFO] [STDOUT]: [fr.sandbox.EventHandlerCraft:onCraft:15]: valeur de la durablitité: 0
                      [20:28:38] [Server thread/INFO] [STDOUT]: [fr.sandbox.EventHandlerCraft:onCraft:19]: valeur de la durablitité: 1
                      

                      voila ce qu’on obtiens quand on craft l’item , l’item ne perd toujours pas de durabilité  nous avons aussi testé de l’ajouté a une classe de tool material en lui donnant la fonction d’épée et l’item s’use quand je tape un mob et quand je craft il se répare

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

                        Tiens c’est étrange ça, je passe sur ts.

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

                          Lien du tutoriels dans quelques jours

                          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