MFF

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

    Block qui drop des items tout les x ticks

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    6 Messages 2 Publieurs 1.4k 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.
    • S Hors-ligne
      Sigma_Philein
      dernière édition par

      Bonjour à tous !

      Je cherche à créer un **block **qui drop des items au sol au bout d’un intervalle de temps, 
      Mais je ne sais pas comment faire pour qu’un block drop des items …
      Si quelqu’un a une idée je suis intéressé !!

      Merci

      Sigma

      > "Il n’existe que deux choses infinies, l’univers et la bêtise humaine… mais pour l'uni…

      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

        Salut,
        Il faut faire spawner une EntityItem contenant l’item stack voulu dans le monde.
        Pour faire un action tous les x temps dans un bloc tu peux utiliser la fonction updateTick, le temps de tick se défini avec la fonction tickRate. Il faut ajouter un this.setRandomTick(true); dans le constructeur pour que cela fonctionne.

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

          @‘robin4002’:

          Salut,
          Il faut faire spawner une EntityItem contenant l’item stack voulu dans le monde.
          Pour faire un action tous les x temps dans un bloc tu peux utiliser la fonction updateTick, le temps de tick se défini avec la fonction tickRate. Il faut ajouter un this.setRandomTick(true); dans le constructeur pour que cela fonctionne.

          Merci beaucoup !
          J’ai fais ça :

          public void updateTick(World world, int x, int y, int z)
          {
              EntityItem item = new EntityItem(world, x, y, z, new ItemStack(ItemMod.limber, 1));
          }
          
          public int tickRate() 
          { 
              return 10; 
          }
          

          Mais ça ne marche pas quelqu’un peut m’expliquer la connerie que j’ai faite et que j’ai pas vu …

          Merci ^^

          > "Il n’existe que deux choses infinies, l’univers et la bêtise humaine… mais pour l'uni…

          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

            Le problème c’est que ton code est incomplet, tu ne spawn jamais l’entité item. De plus la fonction updateTick a en argument en plus Random que tu n’as pas mis. Tu peux utiliser l’annotation @Override pour t’assurer qu’une fonction existe dans la classe mère.
            Il faut ajouter dans updateTick :
            world.spawnEntityInWorld(item);

            Par contre si l’entité spawn sur le world client tu vas avoir une entité fantôme impossible à ramasser. Donc il faudrait plutôt faire comme ça :

            @Override
            public void updateTick(World world, int x, int y, int z, Random rand)
            {
            if(!world.isRemote)
            {
            EntityItem item = new EntityItem(world, x, y, z, new ItemStack(ItemMod.limber, 1));
            world.spawnEntityInWorld(item);
            }
            }
            

            N’oublies pas d’ajouter setTickRandomly(true); dans le constructeur du bloc.

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

              @‘robin4002’:

              Le problème c’est que ton code est incomplet, tu ne spawn jamais l’entité item. De plus la fonction updateTick a en argument en plus Random que tu n’as pas mis. Tu peux utiliser l’annotation @Override pour t’assurer qu’une fonction existe dans la classe mère.
              Il faut ajouter dans updateTick :
              world.spawnEntityInWorld(item);

              Par contre si l’entité spawn sur le world client tu vas avoir une entité fantôme impossible à ramasser. Donc il faudrait plutôt faire comme ça :

                 @Override
                 public void updateTick(World world, int x, int y, int z, Random rand)
                 {
                  if(!world.isRemote)
                  {
                  EntityItem item = new EntityItem(world, x, y, z, new ItemStack(ItemMod.limber, 1));
                  world.spawnEntityInWorld(item);
                  }
                 }
              

              N’oublies pas d’ajouter setTickRandomly(true); dans le constructeur du bloc.

              Ça ne marche toujours pas 😕

              > "Il n’existe que deux choses infinies, l’univers et la bêtise humaine… mais pour l'uni…

              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

                Envoies le code complet de ta classe.

                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