MFF

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

    onBlockDestroy ?

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.x
    22 Messages 3 Publieurs 3.6k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Non, absolument pas.
      On peut pas inventer des méthodes comme ça, sauf si tu l’appelle quelque part.
      Or public boolean onBlockDestroyed(World world, int x, int i , int z, EntityPlayer player) n’existe pas dans ItemTool.java, c’est :
      public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase living)

      Attention, les arguments change tout :

      public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase living)
      {
      if(world.getBlock(x, y, z) == Blocks.planks) // vérifie le bloc
      {
      System.out.println("je vais drop");
      world.setBlockToAir(x, y, z);
      if(living instanceof EntityPlayer)
      {
      EntityPlayer player = (EntityPlayer)living;
      if(world.rand.nextInt(2) == 0) // génére un nombre entre 0 inclut et 2 exclut (donc 0 ou 1)
      { //si il est égale à 0
      player.dropPlayerItemWithRandomChoice(new ItemStack(ModMinecraft.itemSevewithmosquito), false);
      }
      else
      { //sinon il est forcement égale à 1
      player.dropPlayerItemWithRandomChoice(new ItemStack(ModMinecraft.itemSeve ), false);
      }
      }
      }
      else
      {
      System.out.println("le bloc correspond pas, je drop rien " + world.getBlock(x, i, z).getUnlocalizedName());
      
      }
      return super.onBlockDestroyed(stack, world, block, x, y, z, living);
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • FlowF Hors-ligne
        Flow
        dernière édition par

        Ok sa drop l’item de facon random maintenant !! 😄 J’ai juste rajouter un autre if(world.rand.netInt(3) == 2) pour que parfois ils ne drop rien , il y a moyen de faire en sorte que l’item sevewithmosquito soit plus rare a drop ? De plus la c’est le player qui drop l’item et j’aimerais que se soit le “block” qui le drop , c’est possible ?

        C’est bon du coup comme ca ?

        if(living instanceof EntityPlayer)
        {
        EntityPlayer player = (EntityPlayer)living;
        if(world.rand.nextInt(3) == 0) // génére un nombre entre 0 inclut et 2 exclut (donc 0 ou 1)
        { //si il est égale à 0
        player.dropPlayerItemWithRandomChoice(new ItemStack(ModMinecraft.itemSevewithmosquito), false);
        }
        
        if(world.rand.nextInt(3) == 2) // génére un nombre entre 0 inclut et 2 exclut (donc 0 ou 1)
        { //si il est égale à 0
        
        }
        else
        { //sinon il est forcement égale à 1
        player.dropPlayerItemWithRandomChoice(new ItemStack(ModMinecraft.itemSeve ), false);
        }
        }
        }
        

        Oui ce gif est drôle.

        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

          int randInt = world.rand.nextInt(3)
          if(randInt == 0)
          {
          première action
          }
          else if(randInt == 1)
          {
          deuxième action
          }
          else
          {
          rien ou troisième action
          }
          

          Pour le drop, vire ta fonction actuel avec le joueur et remplace par :

          float f = 0.7F;
          double d0 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
          double d1 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
          double d2 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
          EntityItem entityitem = new EntityItem(world, (double)x + d0, (double)y + d1, (double)z + d2, new ItemStack(world.getBlock(x, y, z), 1)); // instancie une nouvelle entité item avec les coordonnées + l'id et le metadata du bois
          entityitem.delayBeforeCanPickup = 10;
          world.spawnEntityInWorld(entityitem); // spawn l'entité item
          

          En plus j’ai donné cette fonction dans le tutoriel sur les outils …

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

            Je comprend la fonction ce que je comprend pas c’est comme je choisis l’item à droppé je viens de lire l’effet sur la hache dans Créer un kit d’outils et je vois toujours pas 😕 Je suis un peu perdu en fait la je dois t’avouer xD

            Oui ce gif est drôle.

            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

              EntityItem entityitem = new EntityItem(world, (double)x + d0, (double)y + d1, (double)z + d2, new ItemStack(world.getBlock(x, i, z), 1));

              new ItemStack(bloc ou item, quantité, metadata)

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

                Et pour la fonction d’un qui est plus rare a drop que l’autre c’est possible ?

                Oui ce gif est drôle.

                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

                  Change le random …

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

                    C’est à dire un code a rajouter ou dans le code que tu ma donner il y a une fonction précise , désoler je suis un gros boulet xD

                    Oui ce gif est drôle.

                    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

                      La c’est de la logique …
                      Réfléchis un peu.
                      Suffit juste de monter la valeur obtenu et d’adapter les conditions.

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

                        Ah oui oké c’est comme je pensais donc je rajoute le même item qui peut revenir tout le temps oké oké ca va j’ai compris désolé , je n’oublierais surement pas de te mettre dans mon modinfo robin ! 😉 RESOLU 😄

                        Oui ce gif est drôle.

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB