MFF

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

    Besoin d'aide pour 'Anti-BoneMeal'

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    18 Messages 3 Publieurs 4.1k 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.
    • EryahE Hors-ligne
      Eryah
      dernière édition par

      Bonjour, je me présente, Eryah. Je m’attaque à un truc que j’ai toujours espérer arriver dans les changelogs de minecraft : Le désherbant. Eh bah oui, c’est vraiment énervant d’avoir trouvé une superbe place pour construire, mais de devoir détruire à la main/Avec des seau d’eau toute l’herbe ! Pour luter contre ceci, je vais tenter de créer l’inverse de la bonemeal :

      • Fera disparaître l’herbe et les fleurs

      Wuah sa fait beaucoup de condition à remplir ^^’ Mais je sens que cela va m’être extrêmement complexe

      J’ai tenté également d’etudier le code de la bonemeal, mais la… Je comprend rien. Quelqu’un pourrait m’expliquer ? ^^’

      ​ else
              {
                  EnumDyeColor enumdyecolor = EnumDyeColor.byDyeDamage(stack.getMetadata());
      
                  if (enumdyecolor == EnumDyeColor.WHITE)
                  {
                      if (applyBonemeal(stack, worldIn, pos, playerIn))
                      {
                          if (!worldIn.isRemote)
                          {
                              worldIn.playAuxSFX(2005, pos, 0);
                          }
      
                          return true;
                      }
                  }
      
       public static boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target)
          {
              if (worldIn instanceof net.minecraft.world.WorldServer)
                  return applyBonemeal(stack, worldIn, target, net.minecraftforge.common.util.FakePlayerFactory.getMinecraft((net.minecraft.world.WorldServer)worldIn));
              return false;
          }
      
       public static boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target, EntityPlayer player)
          {
              IBlockState iblockstate = worldIn.getBlockState(target);
      
              int hook = net.minecraftforge.event.ForgeEventFactory.onApplyBonemeal(player, worldIn, target, iblockstate, stack);
              if (hook != 0) return hook > 0;
      
              if (iblockstate.getBlock() instanceof IGrowable)
              {
                  IGrowable igrowable = (IGrowable)iblockstate.getBlock();
      
                  if (igrowable.canGrow(worldIn, target, iblockstate, worldIn.isRemote))
                  {
                      if (!worldIn.isRemote)
                      {
                          if (igrowable.canUseBonemeal(worldIn, worldIn.rand, target, iblockstate))
                          {
                              igrowable.grow(worldIn, worldIn.rand, target, iblockstate);
                          }
      
                          --stack.stackSize;
                      }
      
                      return true;
                  }
              }
      
              return false;
          }
      
      @SideOnly(Side.CLIENT)
          public static void spawnBonemealParticles(World worldIn, BlockPos pos, int amount)
          {
              if (amount == 0)
              {
                  amount = 15;
              }
      
              Block block = worldIn.getBlockState(pos).getBlock();
      
              if (block.isAir(worldIn, pos))
              {
                  block.setBlockBoundsBasedOnState(worldIn, pos);
      
                  for (int j = 0; j < amount; ++j)
                  {
                      double d0 = itemRand.nextGaussian() * 0.02D;
                      double d1 = itemRand.nextGaussian() * 0.02D;
                      double d2 = itemRand.nextGaussian() * 0.02D;
                      worldIn.spawnParticle(EnumParticleTypes.VILLAGER_HAPPY, (double)((float)pos.getX() + itemRand.nextFloat()), (double)pos.getY() + (double)itemRand.nextFloat() * block.getBlockBoundsMaxY(), (double)((float)pos.getZ() + itemRand.nextFloat()), d0, d1, d2, new int[0]);
                  }
              }
              else
              {
                  for (int i1 = 0; i1 < amount; ++i1)
                  {
                      double d0 = itemRand.nextGaussian() * 0.02D;
                      double d1 = itemRand.nextGaussian() * 0.02D;
                      double d2 = itemRand.nextGaussian() * 0.02D;
                      worldIn.spawnParticle(EnumParticleTypes.VILLAGER_HAPPY, (double)((float)pos.getX() + itemRand.nextFloat()), (double)pos.getY() + (double)itemRand.nextFloat() * 1.0f, (double)((float)pos.getZ() + itemRand.nextFloat()), d0, d1, d2, new int[0]);
                  }
              }
          }
      

      J’ai mis toute les méthodes en rapport avec la bonemeal

      Membre fantôme
      Je développe maintenant un jeu sur UnrealEngine4


      Contact :…

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

        Un moyen simple : la méthode onItemUseFirst dans laquelle tu regardes si le block clické est de l’hebre ou même extends BlockCrops et tu fait world.setBlockToAir.

        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
        • EryahE Hors-ligne
          Eryah
          dernière édition par

          Oui, mais je voudrais que cela ait un rayon égale ou réduit à la bone meal. J’ai prévu que pour le craft, sa soit 2 Chair Putréfié. Sa fait cher le désherbant, mais en plus, on peut faire la même chose à la main…

          Membre fantôme
          Je développe maintenant un jeu sur UnrealEngine4


          Contact :…

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

            Si tu veux aller plus loin que le block cliqué, il va falloir faire un algorithme et c’est à toi de le faire tout seul. La bonemeal de minecraft utilise une instance d’un Random pour faire çà, ce que tu ne peux pas faire dans ton cas.

            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
            • EryahE Hors-ligne
              Eryah
              dernière édition par

              Ah…
              Et si je ne sais pas faire d’algorithme ? Je suis dans le caca ?

              Membre fantôme
              Je développe maintenant un jeu sur UnrealEngine4


              Contact :…

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

                Je t’e conseille le floodfill.

                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
                • EryahE Hors-ligne
                  Eryah
                  dernière édition par

                  Ehh… Je vais surement me faire engeuler, mais…
                  Qu’est-ce qu’un floodfill ??

                  Membre fantôme
                  Je développe maintenant un jeu sur UnrealEngine4


                  Contact :…

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

                    Floodfill.

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

                      Tu n’as pas du tout besoin de faire là même chose que la bone meal.

                      Tu as juste à mettre 2 ou 3 boucles for (x, z ou x, y et z) dans la fonction onItemUse et si les blocs aux coordonnées x, y, z sont des plantes tu mets de l’air.

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

                        J’ai déjà cherché cela, mais sous une autre recherche, car je n’aime aps quand je cherche du code, sans que cela ait un rapport avec MC
                        Je cherche donc directement des tutos sur MinecraftForge.com, ou en rapport avec MC
                        J’ai cherché : Forge 1.8 FloodFill est j’ai rien trouvé. Je vais essayer de comprend tous cela


                        J’ai balayer le topic… J’ai RIEN compris ! 
                        Je vais essayer le méthode de robin, même si je n’ai jamais fais de boucle, j’ai une légère connaisanse sur ComputerCraft, espèrons que les boucles, se soit le même système

                        Membre fantôme
                        Je développe maintenant un jeu sur UnrealEngine4


                        Contact :…

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

                          floodfill est un algorithme qui n’a aucun rapport avec forge, le lien que je t’ai donné devrait LARGEMENT t’aider, je ne donne pas tout sur demande, cherche pas toi même.

                          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
                          • EryahE Hors-ligne
                            Eryah
                            dernière édition par

                            Petite question 
                            Peut-on dessiner une forme sans algorithme etc…
                            J’aimerai simplement un cercle de 2 de rayon genre

                            OOOOOOO       O=Gazon
                            OOO   OOO       M = Origine 
                            OO        OO
                            O     M     O
                            OO        OO
                            OOO   OOO
                            OOOOOOO

                            Excusez moi ce schéma dégoulasse

                            Membre fantôme
                            Je développe maintenant un jeu sur UnrealEngine4


                            Contact :…

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

                              Soit tu fait block par block ce qui est très stupide et fastidieux ou tu peux faire une boucle / algorithme.

                              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
                              • EryahE Hors-ligne
                                Eryah
                                dernière édition par

                                Ah 😞
                                j’aurais imaginer une ligne du genre
                                GetShape(ShapeCircle circle, r=2)

                                J’ai regarder un peu les boucles http://openclassrooms.com/courses/apprenez-a-programmer-en-java/les-boucles-2
                                Et la, beaucoup de question :

                                • J’utilise une boucle while ?
                                • Do While ?
                                • For ?

                                Je vois donc rapidement que j’ai besoin d’une boucle while
                                Mais la…

                                • Quel est la condition ?
                                • Comment localiser des blocs ?

                                Membre fantôme
                                Je développe maintenant un jeu sur UnrealEngine4


                                Contact :…

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

                                  Moi j’aurais utilisé 3 boucles for (une pour chaque axe), un comme çà :

                                  for (int i = -1; i < 3; i++) {
                                  for (int j = -3; j <= 3; j++) {
                                  for (int k = -3; k <= 3; k++) {
                                  if (world.getBlock(x + j, y + i, z + k) instanceof BlockBush) world.setBlockToAir(x + j, y + i, z + k);
                                  }
                                  }
                                  }
                                  

                                  Ce code marche théoriquement en 1.7, à toi de trouver le reste.

                                  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
                                  • EryahE Hors-ligne
                                    Eryah
                                    dernière édition par

                                    Erreurs

                                    ​for (int i = -1; i < 3; i++) {
                                    for (int j = -3; j <= 3; j++) {
                                    for (int k = -3; k <= 3; k++) {
                                    if (worldIn.*getBlock*(x + j, y + i, z + k) instanceof BlockBush) worldIn.*setBlockToAir*(x + j, y + i, z + k);
                                    }
                                    }
                                    }
                                    

                                    J’ai essayer de remplacer getBlock par getBlockStates, en vain

                                    The method getBlock(float, float, float) is undefined for the type World
                                    The method setBlockToAir(BlockPos) in the type World is not applicable for the arguments (float, float,

                                    Membre fantôme
                                    Je développe maintenant un jeu sur UnrealEngine4


                                    Contact :…

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

                                      @‘SCAREX’:

                                      Ce code marche théoriquement en 1.7, à toi de trouver le reste.

                                      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
                                      • EryahE Hors-ligne
                                        Eryah
                                        dernière édition par

                                        Tout comme le briquet activateur de redstone, je le désenregistre. Je le reprendrais plus tard.
                                        Cet item me semble beaucoup plus compliqué, car nécessitant des boucles for, ou des algorithmes

                                        Membre fantôme
                                        Je développe maintenant un jeu sur UnrealEngine4


                                        Contact :…

                                        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