MFF

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

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

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.8.9
    23 Messages 5 Publieurs 4.9k Vues 1 Abonné
    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.
    • Superloup10S Hors-ligne
      Superloup10 Modérateurs
      dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        • 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 réponse Dernière réponse Répondre Citer 0
        • VoraXV Hors-ligne
          VoraX
          dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • Superloup10S Hors-ligne
            Superloup10 Modérateurs
            dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • BrokenSwingB Hors-ligne
              BrokenSwing Moddeurs confirmés Rédacteurs
              dernière édition par

              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 réponse Dernière réponse Répondre Citer 0
              • VoraXV Hors-ligne
                VoraX
                dernière édition par

                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 réponse Dernière réponse Répondre Citer 0
                • BrokenSwingB Hors-ligne
                  BrokenSwing Moddeurs confirmés Rédacteurs
                  dernière édition par

                  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 réponse Dernière réponse Répondre Citer 0
                  • VoraXV Hors-ligne
                    VoraX
                    dernière édition par

                    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 réponse Dernière réponse Répondre Citer 0
                    • BrokenSwingB Hors-ligne
                      BrokenSwing Moddeurs confirmés Rédacteurs
                      dernière édition par

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

                      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

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

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

                          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 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.

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

                              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 réponse Dernière réponse Répondre Citer 0
                              • BrokenSwingB Hors-ligne
                                BrokenSwing Moddeurs confirmés Rédacteurs
                                dernière édition par

                                Mais du coup enlève la fonction canHarvestBlcok

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

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

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

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

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

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

                                      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 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 shovel et non spade.
                                        Autant pour moi.

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

                                          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 réponse Dernière réponse Répondre Citer 0
                                          • robin4002R Hors-ligne
                                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                            dernière édition par

                                            Via un event :

                                               @SubscribeEvent
                                               public void onBlockDrop(BlockEvent.HarvestDropsEvent event)
                                               {
                                                   if(event.state.getBlock() == ClassePrincipale.bloc && event.harvester != null && event.harvester.getCurrentEquippedItem() != null)
                                                   { // si c'est ton bloc et que le bloc a été détruit par un joueur et que l'item qu'il a en main n'est pas nul
                                                       Set <string>toolClass = event.harvester.getCurrentEquippedItem().getItem().getToolClasses(event.harvester.getCurrentEquippedItem()); // le type d'outil
                                                       if(!toolClass.contains("pickaxe") && !toolClass.contains("shovel"))
                                                       { // s'il ne contient ni pickaxe ni shovel (donc si ce n'est pas une pioche ni une pelle)
                                                           event.drops.clear(); // on retire le drop
                                                       }
                                                   }
                                               }
                                            ```</string>
                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB