MFF

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

    Une Pioche avec 2 modes de vitesse

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    18 Messages 5 Publieurs 3.1k 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

      Pour ce que tu veux faire je crois que tu va être obligé de passer par l’event BreakSpeed pour modifier la vitesse selon le mode que ta pioche

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

        Plus simple : la même chose que l’épée.

        La fonction getStrVsBlock() adapte la vitesse de minage. Un truc du genre :

        
        public float getStrVsBlock(ItemStack stack, IBlockState state)
        {
        float speed = super.getStrVsBlock(stack, state);
        byte mode = stack.getTagCompound().getByte("mode");
        if(mode == 1)
        return speed*2;
        else
        return speed*3;
        }
        
        

        devrai fonctionner

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

          @‘Jodge’:

          Plus simple : la même chose que l’épée.

          La fonction getStrVsBlock() adapte la vitesse de minage. Un truc du genre :

          
          public float getStrVsBlock(ItemStack stack, IBlockState state)
          {
          float speed = super.getStrVsBlock(stack, state);
          byte mode = stack.getTagCompound().getByte("mode");
          if(mode == 1)
          return speed*2;
          else
          return speed*3;
          }
          
          

          devrai fonctionner

          j’ai essayer mais j’ai une erreur sur IblockState

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

            Normale tu as en 1.7, fait ALT + SHIFT + S > Override/Implement method > et cherche getStrVsBlock > tu le coches > tu valide

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

              @‘BrokenSwing’:

              Normale tu as en 1.7, fait ALT + SHIFT + S > Override/Implement method > et cherche getStrVsBlock > tu le coches > tu valide

              Euh il n’existe pas on peut pas m’envoyer directement la method ?

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

                En 1.7 cette méthode est obfusquée, donc tu vas dans la classe ItemTool (ou ItemPickaxe j’en sais rien) et tu cherche, c’pas bien compliqué.
                Pour ma part c’est ça (en 1.7.10) :

                    public float func_150893_a(ItemStack stack, Block block)
                    {
                        return taVitesse;
                    }
                

                Fracture

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

                  heuu… Vous devez pas être à jour sur la version de Forge alors, je l’ai toujours vue deobfusquée cette fonction… (et ceux depuis 1.6.4)

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

                    Je le place ou exactement parce que j’ai essayer de le placer un peu n’importe ou toujours la meme erreur

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

                      Dans ta class de l’objet, au même niveau que “onItemRightClick” et tout le reste.
                      C’est une des fonctions de base d’un item (disponible dans la class Item que tu hérite).

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

                        package fr.yahoo.mehdiboussalem.mehdmod.common;
                        
                        import net.minecraft.block.Block;
                        import net.minecraft.entity.player.EntityPlayer;
                        import net.minecraft.item.ItemPickaxe;
                        import net.minecraft.item.ItemStack;
                        import net.minecraft.nbt.NBTTagCompound;
                        import net.minecraft.util.ChatComponentTranslation;
                        import net.minecraft.world.World;
                        
                        public class ItemMehdriumPickaxe extends ItemPickaxe {
                        
                        protected ItemMehdriumPickaxe(ToolMaterial material) {
                        super(material);
                        
                        }
                        public boolean getIsRepairable(ItemStack imput, ItemStack repair)
                        {
                        if(repair.getItem() == MehdMod.itemMehdrium)
                        {
                        return true;
                        }
                         return false;
                        }
                        public float func_150893_a(ItemStack stack, Block block)
                           {
                               return 5;
                           }
                        public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                        {
                        
                        if (player.isSneaking()){
                        
                        if(!stack.hasTagCompound())
                        {
                        stack.setTagCompound(new NBTTagCompound());
                        }
                        byte mode = stack.getTagCompound().getByte("mode");
                        mode++;
                        if(mode ==2)
                        {
                        mode=0;
                        }
                        stack.getTagCompound().setByte("mode", mode);
                        if(!world.isRemote)
                        {
                        player.addChatMessage(new ChatComponentTranslation(mode == 0 ?"pickaxe.mode.message.0" :  "pickaxe.mode.message.1" ));
                        }
                        }
                        else
                        {
                        super.onItemRightClick(stack, world, player);
                        }
                        return stack;
                        }
                        
                        public float getStrVsBlock(ItemStack stack, IBlockState state)// erreur a IBlockState
                        {
                        float speed = super.getStrVsBlock(stack, state);
                        byte mode = stack.getTagCompound().getByte("mode");
                        if(mode == 1)
                        return speed*2;
                        else
                        return speed*3;
                        
                        }
                        
                        }
                        

                        Comme ça j’ai encorre la meme erreur

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

                          Sur Eclipse :
                          Ctrl + clic gauche sur ‘ItemPickaxe’. Ça vas t’ouvrir la class. Tu fait la même chose sur le mot qui apparaît à la place (ItemTool je crois), et tu continue jusqu’à arrivé sur la class Item
                          OU
                          tu cherche la classe Item manuellement dans net.minecraft.item qui s’appelle item.class

                          Une fois dessus, Ctrl+f et tu cherche ‘return 1.0F;’ Tu a normalement UNE occurrence. Tu copie la fonction, et tu la colle dans ta classe. C’est cette fonction qui gère la résistance du block.

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

                            @‘Jodge’:

                            Sur Eclipse :
                            Ctrl + clic gauche sur ‘ItemPickaxe’. Ça vas t’ouvrir la class. Tu fait la même chose sur le mot qui apparaît à la place (ItemTool je crois), et tu continue jusqu’à arrivé sur la class Item
                            OU
                            tu cherche la classe Item manuellement dans net.minecraft.item qui s’appelle item.class

                            Une fois dessus, Ctrl+f et tu cherche ‘return 1.0F;’ Tu a normalement UNE occurrence. Tu copie la fonction, et tu la colle dans ta classe. C’est cette fonction qui gère la résistance du block.

                            package fr.yahoo.mehdiboussalem.mehdmod.common;
                            
                            import net.minecraft.block.Block;
                            import net.minecraft.entity.player.EntityPlayer;
                            import net.minecraft.item.ItemPickaxe;
                            import net.minecraft.item.ItemStack;
                            import net.minecraft.nbt.NBTTagCompound;
                            import net.minecraft.util.ChatComponentTranslation;
                            import net.minecraft.world.World;
                            
                            public class ItemMehdriumPickaxe extends ItemPickaxe {
                            
                            protected ItemMehdriumPickaxe(ToolMaterial material) {
                            super(material);
                            
                            }
                            public boolean getIsRepairable(ItemStack imput, ItemStack repair)
                            {
                            if(repair.getItem() == MehdMod.itemMehdrium)
                            {
                            return true;
                            }
                             return false;
                            }
                            
                            public float func_150893_a(ItemStack stack, Block block)
                               {
                                   return 1.0F;
                               }
                            public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                            {
                            
                            if (player.isSneaking()){
                            
                            if(!stack.hasTagCompound())
                            {
                            stack.setTagCompound(new NBTTagCompound());
                            }
                            byte mode = stack.getTagCompound().getByte("mode");
                            mode++;
                            if(mode ==2)
                            {
                            mode=0;
                            }
                            stack.getTagCompound().setByte("mode", mode);
                            if(!world.isRemote)
                            {
                            player.addChatMessage(new ChatComponentTranslation(mode == 0 ?"pickaxe.mode.message.0" :  "pickaxe.mode.message.1" ));
                            }
                            }
                            else
                            {
                            super.onItemRightClick(stack, world, player);
                            }
                            return stack;
                            }
                            
                            public float getStrVsBlock(ItemStack stack, IBlockState state)
                            {
                            float speed = super.getStrVsBlock(stack, state);
                            byte mode = stack.getTagCompound().getByte("mode");
                            if(mode == 1)
                            return speed*2;
                            else
                            return speed*3;
                            
                            }
                            
                            }
                            

                            comme ça ? mais j’ai toujours l’erreur

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

                              Qu’elle erreur précisément ? (log)
                              Et a tu bien changer la fonction par celle de la 1.7.10 ? (Donc celle qui n’utilise pas IBlockStats)

                              EDIT : Bon, j’ai re-re-re-re-setup un projet en 1.7.10 (vive les maj eclipse qui bousille tous ^^" En même temps passer de Indigo à Luna, voila voila x) )

                                 public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_)
                                 {
                                     return 1.0F;
                                 }
                              

                              voila la fonction sur la dernier version de Forge en 1.7.10, dans la classe Item (elle est re-écrite ensuite sur la class ItemPickaxe)

                              Il faut que tu l’Override comme ceci :

                                 public float func_150893_a(ItemStack stack, Block block)
                                 {
                                 float speed = super.func_150893_a(stack, block); // vitesse originel tirer de la classe ItemPickaxe
                                 // adapte ton switch en fonction des résultats possibles de ta variable (si tu n'as que deux mode, mais un if else, se sera peu être plus simple)
                                 switch(stack.getTagCompound().getByte("mode"))
                                 {
                                 case 1:
                                  return speed*2;
                                 case 2:
                                  return speed*3;
                                  default:
                                  return speed;
                                 }    
                                 }
                              
                              
                              1 réponse Dernière réponse Répondre Citer 1
                              • Mehd95M Hors-ligne
                                Mehd95
                                dernière édition par

                                @‘Jodge’:

                                Qu’elle erreur précisément ? (log)
                                Et a tu bien changer la fonction par celle de la 1.7.10 ? (Donc celle qui n’utilise pas IBlockStats)

                                EDIT : Bon, j’ai re-re-re-re-setup un projet en 1.7.10 (vive les maj eclipse qui bousille tous ^^" En même temps passer de Indigo à Luna, voila voila x) )

                                   public float func_150893_a(ItemStack p_150893_1_, Block p_150893_2_)
                                   {
                                       return 1.0F;
                                   }
                                

                                voila la fonction sur la dernier version de Forge en 1.7.10, dans la classe Item (elle est re-écrite ensuite sur la class ItemPickaxe)

                                Il faut que tu l’Override comme ceci :

                                   public float func_150893_a(ItemStack stack, Block block)
                                   {
                                   float speed = super.func_150893_a(stack, block); // vitesse originel tirer de la classe ItemPickaxe
                                   // adapte ton switch en fonction des résultats possibles de ta variable (si tu n'as que deux mode, mais un if else, se sera peu être plus simple)
                                   switch(stack.getTagCompound().getByte("mode"))
                                   {
                                   case 1:
                                    return speed*2;
                                   case 2:
                                    return speed*3;
                                    default:
                                    return speed;
                                   }    
                                   }
                                
                                

                                Merci beaucoup sa marche parfaitement mais derniere question comment je met le topic en resolus 😛

                                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

                                  C’est écrit dans le post important : https://www.minecraftforgefrance.fr/showthread.php?tid=7

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

                                    @‘robin4002’:

                                    C’est écrit dans le post important : https://www.minecraftforgefrance.fr/showthread.php?tid=7

                                    je trouve pas le bouton editer de mon topic

                                    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

                                      il y a sur la première page, en dessous de ton premier message.

                                      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