MFF

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

    Probleme résolu + explication a bush à XP

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    118 Messages 5 Publieurs 16.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.
    • BrokenSwingB Hors-ligne
      BrokenSwing Moddeurs confirmés Rédacteurs
      dernière édition par

      Ici : GameRegistry.registerItem(rubyIngot, “xperiaMod”); il faut mettre le nom de l’item en 2nd argument, pas ton modid ce qui donne
      GameRegistry.registerItem(rubyIngot, “rubyIngot”);

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

        Merci beaucoup j’ai fait cela et ça marche du tonnerre ! Merci beaucoup ! Sinon je compte faire des bush et je sais qu’il y à la fonction :

        /**

        • Called upon block activation (right click on the block.)
          */
          public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
          {
          if(world.isClient)
          return false;
          else
          {
          player.entityDropItem(new ItemStack(Items.apple), 1);
          return true;
          }
          }

        Mais j’aimerais faire en sorte que l’on puisse faire un clic droit si et seulement si la plante a le stade maximal… J’ai fait des recherche se matin mais je n’ai rien trouvé. Moyen que vous m’aidiez ?

        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 ton bloc ai une propriété age qui augmente de temps en temps, et lorsqu’elle est à la valeur voulue, si il fait clique droit tu drop l’item et tu remet la valeur à 0. Regarde la classe BlockBush. Je viens de me ssouvenir que tu es en 1.7 donc utilise les metadatas à la place de la propriété

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

            Moyen que tu m’explique le code ? Je suis clairement débutant et forcer de coder parce que mon javadev a laisser tomber mon serveur 😞  Donc voila quoi… c’est pas la joie déjà je suis plutôt content d’avoir réussi a faire les nouveau items 😄

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

              Regarde le tuto sur faire un bloc avec plusieurs metadatas, crée un bloc avec 7 metadatas par exemple on verra après

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

                Pas de soucis ! Je te recontacte une fois cela fait ! merci 🙂

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

                  Bon me revoilà 🙂 J’ai pas travailler sur les metadata encore je suis au armures 😄 Le problème c’est que j’ai fait ma première armure mais après pour ajouter ma seconde tout va mal. Robin (je suppose) dans son tuto n’a pas expliquer comment en ajouter une nouvelle.

                  J’ai ajouter les items/leur texture donc c’est bon. Mais par contre le rendu de l’armure sur le joueur je ne sais pas ou le mettre pour ma seconde armure.

                  Edit : 
                  C’est bon j’ai trouvé en faite c’était logique haha ! 
                  J’ai recréé une Class pour chaque render d’amure comme ça je suis sur que sa marche sans me prendre la tète ( a moins que c’était comme comme ça qu’il fallais faire :D)

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

                    Tu peux faire comme ça mais (j’en suis plus sur fais longtemps que j’ai pas codé des armures) tu peux aussi switcher de rendu dans la fonction qui return la ResourceLocation en fonction de l’item.

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                      je ne code que depuis hier donc switcher etc… c’est du verlan pour moi xD Mais ça va venir j’ai du courage xD

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

                        Switcher = faire quelque chose en fonction de d’autre chose qui peut varier (j’explique très mal), en gros si tu switch en fonction d’un item :

                        
                        if(item == quelquechose1)
                        {
                        //faire autrechose1
                        }
                        else if(item == quelquechose2)
                        {
                        //faire autrechose2
                        }
                        
                        ``` Etc…
                        Tu peux aussi le faire plus simplement en java avec les nombres :
                        ```java
                        
                        switch(ton nombre)
                        {
                        case 0:
                        //quelquechose1
                        break;
                        case 1:
                        //quelquechose2
                        break;
                        default:
                        //quelquechose3
                        }
                        
                        

                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                          Ah oki ! Oui ça me parait logique 😉
                          Sinon j’ai fini mes armure la je m’attaque aux outils + hammer (qui mine 8 block autour du block que l’on viens de casser) 
                          Tu pourrais m’expliquer comment on peux le faire ?

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

                            Alors je te donne quelques indices  😉
                            Dans la fonction onBlockDestroyed (si je me trompe pas de nom), fais ctrl+space et tape son nom dans eclipse pour avoir tous les arguments, de ton item, tu vas devoir faire un for() dans un for() dans un autre for() (un pour x, un autre pour y, et un autre pour z) qui vont parcourir tous les blocks autour de celui cassé et faire world.setBlockToAir à ces positions. Si les blocks ne loot pas, dis le moi, je suis plus sur mais il y a peut-être un autre fonction que j’ai quelque part dans mon mod ^^

                            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                              Et voir quelel est la direction dans laquelle mine le joueur pour casser les 8 bons blocs

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

                                Merci beaucoup ! Donc en gros ça ?

                                @Override
                                public boolean onBlockDestroyed(ItemStack item, World world, Block block, int x, int y, int z, EntityLivingBase user)
                                {
                                 if(!world.isRemote && ForgeHooks.isToolEffective(item, block, world.getBlockMetadata(x, y, z)) && ItemSaw.canAcceptCost(user))
                                 {
                                  for(int x1 = -1; x1 <= 1; x1 ++)
                                  {
                                   for(int y1 = -1; y1 <= 1; y1 ++)
                                   {
                                    for(int z1 = -1; z1 <= 1; z1 ++)
                                    {
                                     ForgeDirection FD = getFDFor(user);
                                     int blockX = x+x1 + FD.offsetX;
                                     int blockY = y+y1 + FD.offsetY;
                                     int blockZ = z+z1 + FD.offsetZ;
                                
                                     if(!(x1+FD.offsetX == 0 && y1+FD.offsetY == 0 &&  z1+FD.offsetZ == 0))
                                     {
                                      Block newblock = world.getBlock(blockX, blockY, blockZ);
                                      int m = world.getBlockMetadata(blockX, blockY, blockZ);
                                
                                      if(newblock != null && user instanceof EntityPlayer && ForgeHooks.canHarvestBlock(newblock, (EntityPlayer) user, m) && ForgeHooks.isToolEffective(item, newblock, m))
                                      {
                                       if(rand.nextFloat()*100F < (100F - ConfigTools.hvyDropChance))
                                       {
                                        newblock.dropBlockAsItem(world, blockX, blockY, blockZ, m, EnchantmentHelper.getFortuneModifier(user));
                                       }
                                       world.setBlockToAir(blockX, blockY, blockZ);
                                       item.damageItem(1, user);
                                       ItemSaw.tirePlayer(user, 1F);
                                      }
                                     }
                                    }  
                                   }  
                                  }
                                 }
                                 return super.onBlockDestroyed(item, world, block, x, y, z, user);
                                }
                                
                                

                                Pomper sur le net par contre mais je pense comprendre la logique qui se cache derrière le code

                                La source :  http://www.programcreek.com/java-api-examples/index.php?source_dir=MineFantasy2-master/src/main/java/minefantasy/mf2/item/tool/advanced/ItemHvyPick.java

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

                                  Je te conseille de faire ton propre code, celui-ci utilise d’autres classes du mod que tu ne possède pas (même si il te serait possible de les récupérer vu que tu as les sources mais ce serai du plagia dans ce cas)

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

                                    Oki j’essayerais 😉 je vous le montrerais haha

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

                                      Bon bah je reviens parce que je suis complètement perdu !

                                      package fr.xperiaonline.xperiamod.common;
                                      
                                      import net.minecraft.item.ItemPickaxe;
                                      
                                      public class ItemXperiteHammer extends ItemPickaxe
                                      
                                      {
                                      
                                         protected ItemXperiteHammer(ToolMaterial material)
                                      
                                         {
                                      super(material);
                                      
                                         }
                                      
                                      }
                                      
                                      

                                      Je ne sais pas du tout ou mettre : [font=monospace ][font=monospacepublic][font=monospace ][font=monospaceboolean][font=monospace ][font=monospaceonBlockDestroyed]font=monospace 

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

                                        onBlockDestroyed est une fonction qui appartient à la classe Item, ainsi toutes classe héritants de Item possèdent cette fonction, ce qui est le cas de ta classe ItemXperiteHammer (Item-> ItemTool -> ItemPickaxe -> ItemXperiteHammer) ainsi il te faut réécrire cette fonction dans ta classe :

                                        
                                        package fr.xperiaonline.xperiamod.common;
                                        
                                        import net.minecraft.item.ItemPickaxe;
                                        
                                        public class ItemXperiteHammer extends ItemPickaxe
                                        
                                        {
                                        
                                        public ItemXperiteHammer(ToolMaterial material)
                                        
                                        {
                                        super(material);
                                        }
                                        
                                        public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity)
                                        {
                                        //Tu met ton code ici, ça va ressembler à un truc avec 2 boucles et un gestion de la direction
                                        return false;
                                        }
                                        
                                        }
                                        
                                        
                                        1 réponse Dernière réponse Répondre Citer 0
                                        • YukiShuY Hors-ligne
                                          YukiShu
                                          dernière édition par

                                          Le truc c’est que je ne sais pas du tout quoi mettre dedans et je ne trouve aucune doc je cherche depuis pas mal de temps… même mon ancien codeur trouvais pas 😞

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

                                            Je n’ai pas de code près pour toi, désolé mais on va y aller par étape.
                                            Premièrement on va oublier l’histoire de direction, on va faire deux boucles qui parcours les 9 blocs et qui les détruient

                                            
                                            @Override
                                            public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
                                            
                                            for(int i = -1; i <= 1; i++) {
                                            for(int k = -1; k <= 1; k++) {
                                            Block b = world.getBlock(i, y, k);
                                            int meta = world.getBlockMetadata(i, y, k);
                                            if(this.canHarvestBlock(block, stack) && stack.getItemDamage() > 0) {
                                            world.setBlockToAir(i, y, k);
                                            EntityItem item = new EntityItem(world, i, y, k, new ItemStack(b, 1, meta));
                                            world.spawnEntityInWorld(item);
                                            stack.damageItem(i, entity);
                                            }
                                            }
                                            }
                                            return true;
                                            }
                                            
                                            

                                            Ce code devrait détruire les blocs dans une zone de 3x3 sur le sol (je l’espère)

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB