• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu BoneMeal custom ??

    1.7.x
    1.7.x
    4
    20
    2776
    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.
    • Snyker
      Snyker dernière édition par

      Bonjour,
      j’aimerai savoir si quelqu’un aurait une idée pour faire de la bonemeal custom, tout en gardant la propriété de celle de base.
      ( J’ai crée une plante, et j’aimerai savoir si ont pourrait supprimer la génération de la bonemeal et la remplacer par ma plante)

      ***But précis: ***
      Crée un item de type bonemeal, pouvoir faire pousse n’importe quelle arbre ( ou non ),
      pour la générations des plantes, ajouter mes plantes de mon mod, ou ceux de minecraft.

      Voici le code de ma plante :

      public class Herbe extends BlockBush{
      
      public Herbe()
         {
             super();
             this.setTickRandomly(true);
             float f = 0.2F;
             this.setBlockBounds(0.2F - f, 0.0F, 0.2F - f, 1.0F, -0.1F + f, 1.0F);
             this.setCreativeTab(CreativeTabs.tabDecorations);
         }
      
         @SideOnly(Side.CLIENT)
         public IIcon getIcon(int side, int metadata)
         {
          return blockIcon;
         }
      
         @SideOnly(Side.CLIENT)
         public void registerBlockIcons(IIconRegister iiconRegister)
         {
          this.blockIcon = iiconRegister.registerIcon(this.getTextureName());
         }
      
         protected boolean canPlaceBlockOn(Block block)
         {
              return block == Blocks.grass || block == Blocks.dirt || block == Principal.dirtroad
              || block == Principal.cobbleroad || block == Principal.podzolroad;
         }
      

      Le code de ma bonemeal je que souhaiterai customiser :

      :::

      public class MealBone extends Item{
      
      public MealBone() {
      super();
      this.setCreativeTab(CreativeTabs.tabMaterials);
             this.setMaxDamage(0);
      }
      
         public static boolean func_150919_a(ItemStack p_150919_0_, World p_150919_1_, int p_150919_2_, int p_150919_3_, int p_150919_4_)
         {
             if (p_150919_1_ instanceof WorldServer)
                 return applyBonemeal(p_150919_0_, p_150919_1_, p_150919_2_, p_150919_3_, p_150919_4_, FakePlayerFactory.getMinecraft((WorldServer)p_150919_1_));
             return false;
         }
      
         private static boolean applyBonemeal(ItemStack p_150919_0_,
      World p_150919_1_, int p_150919_2_, int p_150919_3_,
      int p_150919_4_, FakePlayer minecraft) {
      // TODO Auto-generated method stub
      return false;
      }
      
      @Override
         public boolean onItemUse(ItemStack itemstack, EntityPlayer player, World world, int p_77648_4, int p_77648_5, int p_77648_6, int p_77648_7, float p_77648_8, float p_77648_9, float p_77648_10_)
            {
          Block block = world.getBlock(p_77648_4, p_77648_5, p_77648_6);
      
                BonemealEvent event = new BonemealEvent(player, world, block, p_77648_4, p_77648_5, p_77648_6);
                if (MinecraftForge.EVENT_BUS.post(event))
                {
                    return false;
                }
      
                if (event.getResult() == Result.ALLOW)
                {
                    if (!world.isRemote)
                    {
                        itemstack.stackSize–;
                    }
                    return true;
                }
      
                if (block instanceof IGrowable)
                {
                    IGrowable igrowable = (IGrowable)block;
      
                    if (igrowable.func_149851_a(world, p_77648_4, p_77648_5, p_77648_6, world.isRemote))
                    {
                        if (!world.isRemote)
                        {
                            if (igrowable.func_149852_a(world, world.rand, p_77648_4, p_77648_5, p_77648_6))
                            {
                                igrowable.func_149853_b(world, world.rand, p_77648_4, p_77648_5, p_77648_6);
                            }
      
                            --itemstack.stackSize;
                        }
      
                        return true;
                    }
                }
      
                return false;
         }
      }
      

      :::

      Aucune signature n'est disponible pour une barre chocolatée.

      1 réponse Dernière réponse Répondre Citer 0
      • SCAREX
        SCAREX dernière édition par

        1. Ta plante doit être implements IGrowable
        2. Ta bonemeal fonctionne t-elle ?

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

        1 réponse Dernière réponse Répondre Citer 0
        • Snyker
          Snyker dernière édition par

          Oui ma bonemeal marche
          Ok j’essaie ce que tu as dit 🙂

          EDIT

          Ma classe herbe deviens :

          :::

          public class Herbe extends BlockBush implements IGrowable{
          
          public Herbe()
          {
          super();
          this.setTickRandomly(true);
          float f = 0.2F;
          this.setBlockBounds(0.2F - f, 0.0F, 0.2F - f, 1.0F, -0.1F + f, 1.0F);
          this.setCreativeTab(CreativeTabs.tabDecorations);
          }
          
          @SideOnly(Side.CLIENT)
          public IIcon getIcon(int side, int metadata)
          {
          return blockIcon;
          }
          
          @SideOnly(Side.CLIENT)
          public void registerBlockIcons(IIconRegister iiconRegister)
          {
          this.blockIcon = iiconRegister.registerIcon(this.getTextureName());
          }
          
          protected boolean canPlaceBlockOn(Block block)
          {
          return block == Blocks.grass || block == Blocks.dirt || block == Principal.dirtroad
          || block == Principal.cobbleroad || block == Principal.podzolroad;
          }
          
          @Override
          public boolean func_149851_a(World p_149851_1_, int p_149851_2_,
          int p_149851_3_, int p_149851_4_, boolean p_149851_5_) {
          // TODO Auto-generated method stub
          return true;
          }
          
          @Override
          public boolean func_149852_a(World p_149852_1_, Random p_149852_2_,
          int p_149852_3_, int p_149852_4_, int p_149852_5_) {
          // TODO Auto-generated method stub
          return true;
          }
          
          @Override
          public void func_149853_b(World p_149853_1_, Random p_149853_2_,
          int p_149853_3_, int p_149853_4_, int p_149853_5_) {
          // TODO Auto-generated method stub
          
          }
          

          :::

          Mais je ne voie pas comment je pourrait la rajouter dans ma bonemeal.

          Ps: J’apprend ^^
          Ps2: J’ai trouver un tuto sur youtube qui date de y’a 3 ans et le code est totalement différent et j’aimerai savoir si il marcherai en 1.7.10 ?

          Aucune signature n'est disponible pour une barre chocolatée.

          1 réponse Dernière réponse Répondre Citer 0
          • D
            Degraduck dernière édition par

            si c’est en 1.7 oui sinon il y à de grandes chances que cela ne fonctionne pas.

            1 réponse Dernière réponse Répondre Citer 0
            • Snyker
              Snyker dernière édition par

              non y’a 3 ans la 1.7.10 n’était pas sortit x)

              Aucune signature n'est disponible pour une barre chocolatée.

              1 réponse Dernière réponse Répondre Citer 0
              • D
                Degraduck dernière édition par

                Pas faux, as tu les particule de la bone meal?

                1 réponse Dernière réponse Répondre Citer 0
                • Snyker
                  Snyker dernière édition par

                  Non je n’est pas les particules, mais cela marche bien sur les pousse d’arbres ou la grass ^^’

                  Ps: j’ai toujours pas mon herbe à la génération du clique droit de la boneMealCustom(La mienne)

                  Aucune signature n'est disponible pour une barre chocolatée.

                  1 réponse Dernière réponse Répondre Citer 0
                  • D
                    Degraduck dernière édition par

                    Ta fonction onItemRightClick est bien appelée? Place un System.out.println(“ce que tu veux”)

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                      Après la condition
                                if (block instanceof IGrowable)

                      Tu ajoutes une condition pour tes propres plantes.
                      Du genre
                      if(block == ClassPrincipale.tonBlock)
                      {
                           // action (changer le metadata du bloc si c’est une petite plante, appeler le code de génération d’un arbre si c’est une pousse, etc …)
                      }

                      1 réponse Dernière réponse Répondre Citer 0
                      • Snyker
                        Snyker dernière édition par

                        Même si tu ma beaucoup aidé, je n’y arrive toujours pas, j’ai fait ce code :

                        Mais cela ne change pas rien.

                        if (block instanceof IGrowable)
                        {
                        IGrowable igrowable = (IGrowable)block;
                        
                        if(block == Principal.herbe){
                        if(igrowable.func_149851_a(world, p_77648_4, p_77648_5, p_77648_6, world.isRemote)){
                        if(!world.isRemote){
                        if(igrowable.func_149852_a(world, world.rand, p_77648_4, p_77648_5, p_77648_6)){
                        igrowable.func_149853_b(world, world.rand, p_77648_4, p_77648_5, p_77648_6);
                        }
                        }
                        return true;
                        }
                        }
                                      }
                        

                        Aucune signature n'est disponible pour une barre chocolatée.

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                          Je me suis mal exprimé en disant après la condition avec IGrowable
                          Il aurait fallut faire comme ça :

                                    if (block instanceof IGrowable)
                                    {
                                        IGrowable igrowable = (IGrowable)block;
                          
                                        if (igrowable.func_149851_a(world, p_77648_4, p_77648_5, p_77648_6, world.isRemote))
                                        {
                                            if (!world.isRemote)
                                            {
                                                if (igrowable.func_149852_a(world, world.rand, p_77648_4, p_77648_5, p_77648_6))
                                                {
                                                    igrowable.func_149853_b(world, world.rand, p_77648_4, p_77648_5, p_77648_6);
                                                }
                          
                                                –itemstack.stackSize;
                                            }
                          
                                            return true;
                                        }
                                    }
                                    else if(block == Principal.herbe)
                                    {
                                        //action ici, par exemple  world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x,y,z) + 1, 2);
                          return true;
                                    }
                          
                          1 réponse Dernière réponse Répondre Citer 0
                          • Snyker
                            Snyker dernière édition par

                            mais du coup je doit faire un return false juste au dessus puisque je ne veux pas les herbes + roses etc ?

                            edit

                            je n’ai rien plus rien ce fait, mon herbe n’apparait pas, et celle de minecraft aussi.

                            Aucune signature n'est disponible pour une barre chocolatée.

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                              J’ai en effet oublié un return true.

                              1 réponse Dernière réponse Répondre Citer 0
                              • Snyker
                                Snyker dernière édition par

                                Non rien ne marche.

                                Si tu aurait un code source, ou quelques lignes complète je prend avec plaisir ^^.

                                ( Je n’aime pas tourner autour du pot pendant 5h voir + )

                                Aucune signature n'est disponible pour une barre chocolatée.

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                  Quand j’envoie du code tout fait c’est lorsque je regardes de mon côté, je ne fais ça seulement en dernier recours et surtout quand j’ai le temps. Or là je n’ai pas le temps pour faire des tests de mon côté, et j’estime que tu peux encore chercher un peu aussi de ton côté.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • SCAREX
                                    SCAREX dernière édition par

                                    Je te propose 2 méthodes :
                                    1 - Mettre ta plante implements IGrowable, ne rien changer dans la classe de ta bonemeal et ré-écrire ces fonctions :

                                    • func_149851_a (retourne true si la plante est mature)
                                    • func_149852_a (retourne true si la plante peut grandir, dans ton cas il vaut mieux mettre toujours true)
                                    • func_149853_b (fonction appelée pour modifier la plante, c’est ici qu’il faut modifier le metadata)
                                      PS : utilise Alt + shift + S puis “override/implement methods” pour éviter les erreurs dans les paramètres des fonctions
                                      PS 2 : je te conseille cette méthode car elle est compatible avec les autres mods
                                      2 - Faire comme Robin a dit :
                                    • ne rien changer dans la classe de ta plante
                                    • rajouter un else if(block == tonBlock) et changer le metadata de ton block à cet endroit

                                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                                    Pas de demandes de support par MP ni par skype SVP.
                                    Je n'accepte sur skype que l…

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • robin4002
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                      Par contre s’il utilise la méthode 1 la poudre d’os de Minecraft pourra aussi faire pousser ses plantes, je ne vois pas l’intérêt de faire un engrais custom dans ce cas.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • Snyker
                                        Snyker dernière édition par

                                        Ma plante de mon coter ne pousse pas.
                                        Et après avoir essayé plusieurs fois, aucun succès.
                                        Donc je pense la faire à la méthode d’un ami ^^ ( worldedit : //replace et hop )

                                        Aucune signature n'est disponible pour une barre chocolatée.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • SCAREX
                                          SCAREX dernière édition par

                                          @‘iFuSion34’:

                                          Ma plante de mon coter ne pousse pas.
                                          Et après avoir essayé plusieurs fois, aucun succès.
                                          Donc je pense la faire à la méthode d’un ami ^^ ( worldedit : //replace et hop )

                                          Envoi ton code.

                                          Site web contenant mes scripts : http://SCAREXgaming.github.io

                                          Pas de demandes de support par MP ni par skype SVP.
                                          Je n'accepte sur skype que l…

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • Snyker
                                            Snyker dernière édition par

                                            Merci de vouloir m’aider mais je suis partit sur une autre idée du coup ^^
                                            Si un jour ça me prend de vouloir faire ca je continuerai ce sujet. Je le mais en résolu.

                                            Merci de vos aides .

                                            Aucune signature n'est disponible pour une barre chocolatée.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1 / 1
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB