• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • 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
2.6k
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 7 août 2018, 23:39 25 avr. 2014, 15:22

    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 25 avr. 2014, 16:00

      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 25 avr. 2014, 16:06

        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 25 avr. 2014, 16:13

          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 25 avr. 2014, 16:24

            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 25 avr. 2014, 16:32

              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 7 août 2018, 23:39 25 avr. 2014, 16:39

                Aucune idée 😕

                1 réponse Dernière réponse Répondre Citer 0
                • utybo
                  utybo dernière édition par 25 avr. 2014, 16:39

                  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 25 avr. 2014, 17:08

                    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 25 avr. 2014, 17:14

                      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
                      10 sur 10
                      • Premier message
                        10/10
                        Dernier message
                      Design by Woryk
                      Contact / Mentions Légales

                      MINECRAFT FORGE FRANCE © 2018

                      Powered by NodeBB