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

    Résolu Problème d'updatetick

    1.7.x
    1.7.x
    3
    10
    2626
    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.
    • utybo
      utybo dernière édition par robin4002

      Mon bloc ne fait absolument rien avec le updateTick (meêm pas un System.out.println :()… J’ai mis le setTickRandomly en true, mais rien à faire, y’a rien…

      Class :

      
      package utybo.mod.stuffgenerator;
      
      import java.util.Random;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.item.EntityTNTPrimed;
      import net.minecraft.init.Blocks;
      import net.minecraft.world.World;
      
      public class StuffGeneratorBlock extends Block {
      
          public Block generatorBlock;
          public InstabilityLevel instabilityLevel;
      
          //Constructeur
          protected StuffGeneratorBlock(Material material, Block genBlock,
          InstabilityLevel insLevel, CreativeTabs creaTab, String blockName) {
              super(material);
              this.setCreativeTab(creaTab);
              //Constructeur
              this.setTickRandomly(true);
          }
      
          protected void instabilityAction(World world, int x, int y, int z, InstabilityLevel instability, Random rand) {
      
              if (instability != InstabilityLevel.none) {
                  if (instability == InstabilityLevel.xlight) {
                      this.instabilityExplosion(world, x, y, z, 1.0F, false, false,
                      rand.nextInt(10000));
                  }
              //Le même code mais avec des valeurs différentes
              }
          }
      
          protected void instabilityExplosion(World world, int x, int y, int z, float power, boolean fireExplosion, boolean smokeExplosion, int r) {
              //Explosion
          }
      
          protected void generateBlocks(World world, int x, int y, int z) {
              world.setBlock(x + 1, y, z, this.generatorBlock);
              //même code avec coordonnés différentes
          }
      
          @Override
          public void updateTick(World world, int x, int y, int z, Random rand) {
              if (world.getBlock(x + 1, y, z) == Blocks.air || world.getBlock(x - 1, y, z) == Blocks.air
                  //La même chose avec des || et des coordonnés différentes
              {
                  this.instabilityAction(world, x, y, z, this.instabilityLevel, rand);
                  this.generateBlocks(world, x, y, z);
              }
              System.out.println("Je fonctionne!"); //Le texte n'est pas affiché
              super.updateTick(world, x, y, z, rand); //J'ai mis ça à tout hasard, mais ça fonctionne pas...
          }
      }
      

      Moddeur à la retraite et développeur de trucs en Java.

      J'aide les gens comme je peux, alors si mon message v…

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

        J’ai testé ton code chez moi il marche (la fonction updateTick est lue) autrement il manque une parenthèse a la fin de la condition dans updateTick mais je pense que c’est une erreur quand tu a copié le code.

        Autrement tu a attendu combien de temps? Perso j’ai posé environs 10 blocks et j’avais un “je fonctionne!” toute les 20, 30 secondes donc ils sont assez rares (c’est relatif).

        Après ça pourrait aussi être un problème quand tu déclare le bloc mais je pense que tu ne pourrais tout simplement pas le poser.

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

          Erreur de copie effectivement.
          Le problème c’est que normalement les logs devraient être spammés vu que updatetick est effectué toutes les 0,05 secondes 😞

          Moddeur à la retraite et développeur de trucs en Java.

          J'aide les gens comme je peux, alors si mon message v…

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

            Non celui qui est update toutes les 0,05 secondes est updateEntity() qui se trouve dans une class extend TileEntity assossiée à ton bloc.

            
            public class TileEntityclass extends TileEntity{
            public void updateEntity()
            {
            
            }
            }
            
            

            Si je ne me trompe pas.

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

              Du coup il faut que je fasse une TileEntity?

              Moddeur à la retraite et développeur de trucs en Java.

              J'aide les gens comme je peux, alors si mon message v…

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

                Un truc dans le genre :

                
                public class StuffGeneratorBlock extends Block {
                
                public Block generatorBlock;
                public InstabilityLevel instabilityLevel;
                
                //Constructeur
                protected StuffGeneratorBlock(Material material, Block genBlock,
                InstabilityLevel insLevel, CreativeTabs creaTab, String blockName) {
                super(material);
                this.setCreativeTab(creaTab);
                //Constructeur
                }
                
                public TileEntity createTileEntity(World world, int metadata)
                {
                return new TileEntityclass();
                }
                
                public boolean hasTileEntity(int metadata)
                {
                return true;
                }
                
                //tes fonctions
                
                }
                
                

                Et une autre class avec :

                
                public class TileEntityclass extends TileEntity{
                
                public void updateEntity()
                {
                int x = this.xCoord;
                int y = this.yCoord;
                int z = this.zCoord;
                World world = this.worldObj;
                if (world.getBlock(x + 1, y, z) == Blocks.air
                || world.getBlock(x - 1, y, z) == Blocks.air)
                //La même chose avec des || et des coordonnés différentes
                {
                StuffGeneratorBlock.instabilityAction(world, x, y, z, this.instabilityLevel, rand);
                StuffGeneratorBlock.generateBlocks(world, x, y, z);
                
                }
                System.out.println("Je fonctionne!"); //Le texte n'est pas affiché
                }
                
                }
                
                

                Après c’est ce que je ferais, au moins tu aura une update toute les 0,05 secondes, je ne connais pas d’autres methodes mais il doit y en avoir.

                Edit : dans updateEntity() remplacer :
                this.instabilityAction(world, x, y, z, this.instabilityLevel, rand);
                this.generateBlocks(world, x, y, z);
                par :
                StuffGeneratorBlock.instabilityAction(world, x, y, z, this.instabilityLevel, rand);
                StuffGeneratorBlock.generateBlocks(world, x, y, z);

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

                  Aucune idée 😕

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

                    OK je teste ça et je te dis si ça fonctionne Vebert 🙂

                    EDIT : Je peux pas utiliser mes fonctions dans le bloc du coup 😕

                    Moddeur à la retraite et développeur de trucs en Java.

                    J'aide les gens comme je peux, alors si mon message v…

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

                      tu les passent en public et tu remplace (dans updateEntity() ) :
                      this.instabilityAction(world, x, y, z, instabilityLevel, rand);
                      this.generateBlocks(world, x, y, z);
                      par :
                      StuffGeneratorBlock.instabilityAction(world, x, y, z, instabilityLevel, rand);
                      StuffGeneratorBlock.generateBlocks(world, x, y, z);

                      et tu récupère ton instabilityLevel pour l’envoyer aux fonctions.

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

                        J’ai trouvé une autre solution!
                        world.scheduleBlockUpdate(x, y, z, Block, ticks);
                        à mettre dans le OnBlockAdded et le updateTick!

                        Problème résolu!

                        Moddeur à la retraite et développeur de trucs en Java.

                        J'aide les gens comme je peux, alors si mon message v…

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

                        MINECRAFT FORGE FRANCE © 2018

                        Powered by NodeBB