• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Une Pioche avec 2 modes de vitesse

    1.7.x
    1.7.10
    5
    18
    2638
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Mehd95
      Mehd95 last edited by

      bonjour je voudrais creer une pioche avec 2 modes de vitesse mais je suis bloquer

      package fr.yahoo.mehdiboussalem.mehdmod.common;
      
      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 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;
      }
      }
      
      
      1 Reply Last reply Reply Quote 0
      • BrokenSwing
        BrokenSwing Moddeurs confirmés Rédacteurs last edited by

        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 Reply Last reply Reply Quote 0
        • J
          Jodge last edited by

          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 Reply Last reply Reply Quote 0
          • Mehd95
            Mehd95 last edited by

            @‘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 Reply Last reply Reply Quote 0
            • BrokenSwing
              BrokenSwing Moddeurs confirmés Rédacteurs last edited by

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

              1 Reply Last reply Reply Quote 0
              • Mehd95
                Mehd95 last edited by

                @‘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 Reply Last reply Reply Quote 0
                • Eikins
                  Eikins last edited by

                  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 Reply Last reply Reply Quote 0
                  • J
                    Jodge last edited by

                    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 Reply Last reply Reply Quote 0
                    • Mehd95
                      Mehd95 last edited by

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

                      1 Reply Last reply Reply Quote 0
                      • J
                        Jodge last edited by

                        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 Reply Last reply Reply Quote 0
                        • Mehd95
                          Mehd95 last edited by

                          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 Reply Last reply Reply Quote 0
                          • J
                            Jodge last edited by

                            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 Reply Last reply Reply Quote 0
                            • Mehd95
                              Mehd95 last edited by

                              @‘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 Reply Last reply Reply Quote 0
                              • J
                                Jodge last edited by

                                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 Reply Last reply Reply Quote 1
                                • Mehd95
                                  Mehd95 last edited by

                                  @‘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 Reply Last reply Reply Quote 0
                                  • robin4002
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

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

                                    1 Reply Last reply Reply Quote 0
                                    • Mehd95
                                      Mehd95 last edited by

                                      @‘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 Reply Last reply Reply Quote 0
                                      • robin4002
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

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

                                        1 Reply Last reply Reply Quote 0
                                        • 1 / 1
                                        • First post
                                          Last post
                                        Design by Woryk
                                        Contact / Mentions Légales

                                        MINECRAFT FORGE FRANCE © 2018

                                        Powered by NodeBB