MFF

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

    Drop des blocs et modification d'un harvestlevel

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    20 Messages 4 Publieurs 3.3k 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.
    • T Hors-ligne
      TheWolf
      dernière édition par robin4002

      Bonjour. Alors voila, ça fait un moment que je code un mod (je ne suis qu’un débutant) et j’aimerais changer le drop d’un bloc par exemple que le minerais de sapphir drop du sapphir :).
      Mais j’ai aussi un autre problème j’aimerais changer l’harvestlevel qui ne soit plus limité à 1-2-3. Par exemple l’harvestlevel est une pioche de jade. Si quelqu’un à une voire les deux solutions poster les.
      Merci d’avance.


      Et j’ai oublier de préciser que pour la pioche de jade ça serait setHarvestLevel(“pickaxe”, 4); voila tout

      1 réponse Dernière réponse Répondre Citer 0
      • Phenix246P Hors-ligne
        Phenix246 Rédacteurs
        dernière édition par robin4002

        c’est très simple et rapide regarde ici :
        mon github

        oublie pas d’enregistrer l’event :

        MinecraftForge.EVENT_BUS.register(new BlockEvent());
        

        Regarde dans l’event pour le harvestlevel tu devrais trouver ce que tu cherche

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

          Pour le drop de l’item j’ai trouvé mais ce que tu viens de me donner je ne comprends pas trop c’est pour changer le harvestlevel ?

          1 réponse Dernière réponse Répondre Citer 0
          • isadorI Hors-ligne
            isador Moddeurs confirmés Modérateurs
            dernière édition par

            Oui c’est pour créer une classe event de bloc pour ainsi rajouter un harvest level

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

              Si je veux ajouter une harvestlevel je dois prendre sont github et le mettre dans ma classe du minerai ?

              1 réponse Dernière réponse Répondre Citer 0
              • isadorI Hors-ligne
                isador Moddeurs confirmés Modérateurs
                dernière édition par

                Oue mais faudrat le modifier

                1 réponse Dernière réponse Répondre Citer 0
                • T Hors-ligne
                  TheWolf
                  dernière édition par robin4002

                  par exemple quesque je devrais modifier si je veux que l’harvestLevel 4 soit la picohe en jade :

                  @SubscribeEvent
                  public void onBlockDrop(HarvestDropsEvent event)
                  {
                      if(Properties.activeSpecialsDrops)
                      {
                          if(event.block == Blocks.iron_ore)
                          {
                              event.drops.clear();
                              event.drops.add(new ItemStack(ModItemsList.dusts, event.world.rand.nextInt(Properties.dropIron), 0));
                          }
                          if(event.block == Blocks.gold_ore)
                          {
                              event.drops.clear();
                              event.drops.add(new ItemStack(ModItemsList.dusts, event.world.rand.nextInt(Properties.dropGold), 1));
                          }
                      }
                  }
                  
                  1 réponse Dernière réponse Répondre Citer 0
                  • Phenix246P Hors-ligne
                    Phenix246 Rédacteurs
                    dernière édition par

                    Cette méthode te donne le harvestLevel ensuite tu testes les valeurs valeur :

                    int harvestLevel = event.world.getBlock(event.x, event.y, event.z).getHarvestLevel(event.world.getBlockMetadata(event.x, event.y, event.z));
                    

                    Utilise cette méthode pour le harvestLevel :

                    public void setHarvestLevel(String toolClass, int level)
                    {
                    for (int m = 0; m < 16; m++)
                    setHarvestLevel(toolClass, level, m);
                    }
                    
                    

                    Pour le HarvestLevel :

                    if(event.block == Blocks.iron_ore)
                    {
                    event.drops.clear();
                    event.drops.add(new ItemStack(ModItemsList.dusts, event.world.rand.nextInt(Properties.dropIron), 0));
                    }
                    

                    tu modifie le bloc et l’item qui drop

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

                      Je dois le mettre dans la classe principale ou dans une autre ?

                      1 réponse Dernière réponse Répondre Citer 0
                      • Phenix246P Hors-ligne
                        Phenix246 Rédacteurs
                        dernière édition par

                        tout va dans la class de l’event sauf le setHarvestLevel qui va dans la class du block

                        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

                          Phenix, il cherche à modifier le drop de ces propres blocs, il n’a pas besoin d’un event.

                          Pour le bloc :

                          package fr.minecraftforgefrance.tutoriel.common;
                          
                          import java.util.Random;
                          
                          import net.minecraft.block.Block;
                          import net.minecraft.block.material.Material;
                          import net.minecraft.item.Item;
                          
                          public class BlockTutoriel extends Block
                          {
                          protected BlockTutoriel(Material material)
                          {
                          super(material);
                          this.setHarvestLevel("pickaxe", 4); // défini le niveau harvest sur 4
                          }
                          
                          public Item getItemDropped(int metadata, Random rand, int fortune)
                          {
                          return ModTutoriel.itemTutoriel; // drop un item tutoriel
                          }
                          }
                          

                          Pour ta pioche :

                          package fr.minecraftforgefrance.tutoriel.common;
                          
                          import net.minecraft.item.ItemPickaxe;
                          import net.minecraft.item.ItemStack;
                          
                          public class ItemTutoPickaxe extends ItemPickaxe
                          {
                          protected ItemTutoPickaxe(ToolMaterial material)
                          {
                          super(material);
                          this.setHarvestLevel("pickaxe", 4); // harvest niveau 4
                          }
                          
                          public boolean getIsRepairable(ItemStack input, ItemStack repair)
                          {
                          if(repair.getItem() == ModTutoriel.itemTutoriel)
                          {
                          return true;
                          }
                          return false;
                          }
                          }
                          
                          1 réponse Dernière réponse Répondre Citer 0
                          • T Hors-ligne
                            TheWolf
                            dernière édition par

                            Cette technique ne marche pas non plus pourtant elle me semblait plus favorable à moins que je me sois trompé

                            Pour la pioche :

                            package fr.craftandfight.serveur.common;
                            
                            import net.minecraft.item.ItemPickaxe;
                            import net.minecraft.item.ItemStack;
                            
                            public class JadePickaxe extends ItemPickaxe
                            {
                            protected JadePickaxe(ToolMaterial material)
                            {
                            super(material);
                            this.setHarvestLevel("pickaxe", 4); // harvest niveau 4
                            }
                            
                            public boolean getIsRepairable(ItemStack input, ItemStack repair)
                            {
                            if(repair.getItem() == ModCraftAndFight.jade)
                            {
                            return true;
                            }
                            return false;
                            }
                            }
                            

                            et pour le bloc :

                            package fr.craftandfight.serveur.common;
                            
                            import java.util.Random;
                            
                            import net.minecraft.block.Block;
                            import net.minecraft.block.material.Material;
                            import net.minecraft.item.Item;
                            
                            public class RainbowOre extends Block
                            {
                            
                            protected RainbowOre(Material material)
                            {
                            super(material);
                            this.setHarvestLevel("Pickaxe", 4);
                            }
                            @Override
                            public Item getItemDropped(int metadata, Random random, int fortune)
                            {
                            return ModCraftAndFight.rainbowPearl;
                            }
                            }
                            

                            quelqu’un aurait la solution à mon problème svp ?

                            1 réponse Dernière réponse Répondre Citer 0
                            • isadorI Hors-ligne
                              isador Moddeurs confirmés Modérateurs
                              dernière édition par

                              met les balise on pourra mieux lire

                              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(“jadePickaxe”, 4);
                                Juste pickaxe, pas jadePickaxe

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

                                  re désolé je devais y aller je vais tester ça de suite


                                  ça ne marche pas même avec pickaxe

                                  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

                                    Tu peux détailler ? Tu arrive toujours a casser avec les autres pioches ou pas ?

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

                                      Alors je peux casser avec les autres pioches et je drop toujours une “rainbowPearl”


                                      Mais ça va beacoup plus vite avec la pioche en jade


                                      Sinon envoie moi ton skype en mp et je t’ajouterai pour que tu m’aides


                                      Robin tu peux m’accepter skype stp ?

                                      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

                                        Tout est normal sauf le fait que le bloc drop avec une mauvaise pioche. Normalement il devrait pas droppé si tu casse avec une pioche inférieur à 4.

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

                                          Ben je suis d’accord mais ça veut dire que nous n’arrivons pas au résultat attendu 😛

                                          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

                                            Problème réglé, ça venant de la majuscule à Pickaxe. Il ne dois pas en avoir :
                                            this.setHarvestLevel(“pickaxe”, 4);

                                            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