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

    Rendre un bloc destructible + vite avec un type d'outil?

    Sans suite
    1.8.9
    5
    23
    3453
    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.
    • VoraX
      VoraX last edited by

      [font=Ubuntu, sans-serifJe suis sur Eclipse avec forge-1.8.9-11.15.1.1722-mdk .]

      [font=Ubuntu, sans-serifBonjour, je voudrais savoir comment faire pour qu’un bloc se casse plus vite avec un type d’outil.]
      [font=Ubuntu, sans-serifJe voudrais aussi rendre impossible de drop le bloc en cassant avec certains outils.]

      [font=Ubuntu, sans-serifJ’ai essayé avec les options suivantes:]
      [font=Ubuntu, sans-serifAvec un setHarvestLevel, le bloc se casse avec une certaine pioche.]
      [font=Ubuntu, sans-serifAvec un material.iron, le bloc ne se casse qu’à la pioche.]
      [font=Ubuntu, sans-serifJ’ai essayé beaucoup de types de material.quelquechose, mais cela ne me convenait pas. Et je voudrais une autre solutions que celles-ci si possible.]

      [font=Ubuntu, sans-serifSeulement, les blocs simples que j’ai créés se cassent avec n’importe quel outil, et même à la main, et le tout à la même vitesse!]

      [font=Ubuntu, sans-serifComment fait-on?]
      [font=Ubuntu, sans-serifMerci.]

      Je suis la terreur un quart née!
      #Diablo #HOTS

      1 Reply Last reply Reply Quote 0
      • Superloup10
        Superloup10 Modérateurs last edited by

        Déjà, tu peux augmenter le setHardness et le setResistance pour le rendre plus dur à casser et donc plus long, tu peux regarder du côté de la class block pour voir la valeur de l’obsidienne, par exemple.

        Ensuite le setHarvestLevel ne veut pas dire que l’objet va se casser avec une pioche précise mais avec un outil précis.

        Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

        1 Reply Last reply Reply Quote 0
        • BrokenSwing
          BrokenSwing Moddeurs confirmés Rédacteurs last edited by

          • setResistance -> Résistance aux explosions, comme l’a dit Superloup si tu veux que les explosions n’aient pas d’effet sur ton bloc, met un grande valeur ou celle de l’obsidienne
          • setHardness -> Combien de coup il faut mettre pour casser le bloc, attention la résistance de ton bloc peut changer suivant son hardness (cf ligne 364 de la classe net.minecraft.block.Block)
          • setHarvestLevel -> quel outil doit être utilisé, quel niveau de l’outil, les niveaux se trouvent dans la doc de la fonction (cf ligne 2178 de la classe Block), un autre prototype de la version existe prenant aussi les blockstates
          • canHarvestBlock -> Override de la fonction -> grâce aux paramètres tu vérifie se que tu veut et tu renvoie true si il peut le casser et false si il ne peut pas.

          Pour la vitesse je ne sais pas encore

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

            Je n’arrive pas à tout faire. Ce qui fonctionne est dans la classe principale sur cette ligne:

            limonBloc = new LimonBloc(Material.ground).setUnlocalizedName("limonbloc").setHardness(1.15F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabBlock);
            

            J’ai par ailleurs remarqué que pour le setHardness, 1F = 1,5 secondes.

            Sinon, dans la classe du bloc, rien ne fonctionne:

            package fr.vorax.egypte.common;
            
            import net.minecraft.block.Block;
            import net.minecraft.block.material.Material;
            import net.minecraft.block.state.IBlockState;
            import net.minecraft.entity.Entity;
            import net.minecraft.entity.player.EntityPlayer;
            import net.minecraft.potion.Potion;
            import net.minecraft.potion.PotionEffect;
            import net.minecraft.util.BlockPos;
            import net.minecraft.world.IBlockAccess;
            import net.minecraft.world.World;
            import net.minecraftforge.client.event.sound.PlaySoundEvent;
            
            public class LimonBloc extends Block
            {
            
                public LimonBloc(Material material)
                {
                    super(material);
                    this.setHarvestLevel("pickaxe", 2);
                }
            
                @Override
                public boolean canHarvestBlock(IBlockAccess world, BlockPos pos, EntityPlayer player)
                {
                    return super.canHarvestBlock(world, pos, player);
                }
            
            }
            
            

            Et je ne sais pas quoi mettre pour [font=Ubuntu, sans-serifcanHarvestBlock.]

            Je suis la terreur un quart née!
            #Diablo #HOTS

            1 Reply Last reply Reply Quote 0
            • Superloup10
              Superloup10 Modérateurs last edited by

              this.setHarvestLevel(“pickaxe”, 2); <- Ceci va dans le constructeur de ta pioche.

              Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

              Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

              1 Reply Last reply Reply Quote 0
              • BrokenSwing
                BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                Non, SuperLoup, cette fonction est bien une fonction de la classe Block, ligne 2178

                
                /**
                * Sets or removes the tool and level required to harvest this block.
                *
                * @param toolClass Class
                * @param level Harvest level:
                * Wood: 0
                * Stone: 1
                * Iron: 2
                * Diamond: 3
                * Gold: 0
                */
                public void setHarvestLevel(String toolClass, int level)
                {
                Iterator <iblockstate>itr = getBlockState().getValidStates().iterator();
                while (itr.hasNext())
                {
                setHarvestLevel(toolClass, level, itr.next());
                }
                }
                
                

                @Vorax, on va y aller petit à petit, que veut tu faire en premier ? Quels outils ne peuvent-ils pas casser ton bloc ?</iblockstate>

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

                  Alors en fait, je veux que mon bloc de limon se casse plus vite à la pelle. C’est juste le but pour ce bloc.

                  Après, ce sera pour un autre bloc, mais j’aimerais faire en sorte que le bloc ne se casse pas à la main dans un premier temps. Ensuite, qu’il ne se casse pas avec la pelle et la hache par exemple.

                  Je suis la terreur un quart née!
                  #Diablo #HOTS

                  1 Reply Last reply Reply Quote 0
                  • BrokenSwing
                    BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                    Donc si je comprend bien pour ce bloc tu veux qu’on ne puisse le casser qu’avec la pelle :

                    
                    @Override
                    public boolean canHarvestBlock(IBlockAccess world, BlockPos pos, EntityPlayer player)
                    {
                    if(!(player.getHeldItem().getItem() instanceof ItemSpade)) {
                    return false;
                    }
                    return super.canHarvestBlock(world, pos, player);;
                    }
                    
                    

                    J’ai pas testé, dis-moi

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

                      La fonction marche pour ne casser qu’avec la pelle.

                      Mais j’aimerais en fait que mon bloc de limon se casse plus VITE à la pelle.

                      J’aimerais aussi faire en sorte que le bloc ne se casse pas à la main dans un premier temps.
                      Ensuite, qu’il ne se casse pas avec la pioche ET la hache par exemple.

                      Je suis la terreur un quart née!
                      #Diablo #HOTS

                      1 Reply Last reply Reply Quote 0
                      • BrokenSwing
                        BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                        Ah, oui désolé j’avais mal vu, donc comme le sable en fait, essaie avec Material.sand

                        1 Reply Last reply Reply Quote 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                          this.setHarvestLevel(“spade”, 0);
                          dans le constructeur.

                          • material.sand
                          1 Reply Last reply Reply Quote 0
                          • BrokenSwing
                            BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                            Mais je me demandais robin, est ce que l’harvestLevel ne vas pas empêcher de le casser à la main ? Du moins il n’y aura pas de drop

                            1 Reply Last reply Reply Quote 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                              Non.

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

                                Ca ne fonctionne pas.

                                Ligne de la classe principale:

                                limonBloc = new LimonBloc(Material.sand).setUnlocalizedName("limonbloc").setHardness(1.15F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabBlock);
                                

                                Ligne de la classe ‘LimonBloc.java’ :

                                package fr.vorax.egypte.common;
                                
                                import net.minecraft.block.Block;
                                import net.minecraft.block.material.Material;
                                import net.minecraft.block.state.IBlockState;
                                import net.minecraft.entity.Entity;
                                import net.minecraft.entity.player.EntityPlayer;
                                import net.minecraft.item.ItemSpade;
                                import net.minecraft.potion.Potion;
                                import net.minecraft.potion.PotionEffect;
                                import net.minecraft.util.BlockPos;
                                import net.minecraft.world.IBlockAccess;
                                import net.minecraft.world.World;
                                import net.minecraftforge.client.event.sound.PlaySoundEvent;
                                
                                public class LimonBloc extends Block
                                {
                                
                                    public LimonBloc(Material material)
                                    {
                                        super(material);
                                        this.setHarvestLevel("spade", 0);
                                    }
                                
                                    @Override
                                    public boolean canHarvestBlock(IBlockAccess world, BlockPos pos, EntityPlayer player)
                                    {
                                        if(!(player.getHeldItem().getItem() instanceof ItemSpade)) {
                                            return false;
                                        }
                                
                                        return super.canHarvestBlock(world, pos, player);
                                    }
                                
                                }
                                
                                

                                Je suis la terreur un quart née!
                                #Diablo #HOTS

                                1 Reply Last reply Reply Quote 0
                                • BrokenSwing
                                  BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                                  Mais du coup enlève la fonction canHarvestBlcok

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

                                    Ca ne change rien quand je l’enlève.

                                    Je suis la terreur un quart née!
                                    #Diablo #HOTS

                                    1 Reply Last reply Reply Quote 0
                                    • BrokenSwing
                                      BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                                      C’est à dire, il y a quoi comme problème ?

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

                                        Que ce soit à la main ou tous les outils, c’est le même temps pour casser le bloc.

                                        Je suis la terreur un quart née!
                                        #Diablo #HOTS

                                        1 Reply Last reply Reply Quote 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                                          C’est shovel et non spade.
                                          Autant pour moi.

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

                                            Ah oui c’est vrai, c’est malin qu’ils aient mis spade au lieu de shovel tiens…
                                            Enfin bon, ça marche.

                                            Mais pour que la pelle ET la pioche soient les seuls à droper le cube (et que la pioche n’aille pas forcément aussi vite que la pelle), il faut faire comment?
                                            Après, je ne pense pas avoir d’autres questions, je préfère tout poser ici plutôt que de refaire d’autres sujets à chaque fois que je n’arrive pas à faire une petite chose.

                                            Je suis la terreur un quart née!
                                            #Diablo #HOTS

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

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB