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

    Résolu Spawn d'un entity buguer

    1.7.x
    1.7.10
    3
    9
    1242
    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.
    • Kujaroth
      Kujaroth dernière édition par

      Salut,

      Je suis en train de crée un système de “vieillissement” de l’entity, et a un moment, je veux quelle mette bas un petit, pour cela :

      ​public void onUpdate()
      
          {
          super.onUpdate();
          int s = 20;
          int m = 1200;
      
          EntityMobBouftonBlanc entityboufton = new EntityMobBouftonBlanc(worldObj);
           entityboufton.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rand.nextFloat() * 360.0F, 0.0F);
      
          if (this.worldObj.isRemote)    
          {
              if (this.getAge()  % m == 0) // Vieillissement
              {
                  mobSizeOld *= 1.1F;
                  System.out.println("veillit");
              }
      
              if (this.getAge()  % 200 == 0) // naissance
              {
                  System.out.println("naissance");
                   this.worldObj.spawnEntityInWorld(entityboufton);
      
              }
          }
          }
      
      

      Le petit spawn bien, mais buguer, il ne bouge pas, on ne peut pas l’attaquer, il ne fait rien…

      Une idée ? 😕

      Ce la viens surment du world.isremote, mais le soucis c’est que sans ça, le getAge() ne fonctionne plus…

      >! Bonjour/Bonsoir,
      >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

        J’ai eu le même soucis pour mes spawns de monture et j’ai résolu ça par un paquet. En gros ton entité existe coté client et pas serveur.

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

          Ok, merci, je suis assez novice avec les paquets.

          Mais bon, en théorie, je dois fait quoi ? Dire au serveur que l’entité a été crée ? Comment ? 😕

          >! Bonjour/Bonsoir,
          >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

            if (this.worldObj.isRemote)     ->     if (!this.worldObj.isRemote)

            worldObj.isRemote = world client
            !worldObj.isRemote = world server
            Le spawn des entités doit être fait côté serveur.

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

              Merci, mais le soucis c’est que ducoup,

              ​ if (!this.worldObj.isRemote)    
              
                  {
                      if (this.getAge()  % vieillesse == 0) // Vieillissement
                      {
                          mobSizeOld *= 1.1F;
                          System.out.println("veillit");
                      }
              
                      if (this.getAge()  % naissance == 0) // naissance
                      {
              
                          this.worldObj.spawnEntityInWorld(entityboufton);
                          System.out.println("naissance");
                      }
              
                      if (this.getAge()  % mort == 0) // Meurt
                      {
                          this.setHealth(0.0F);
                          System.out.println("meurt");
                      }
                  }
              
              

              Toute les actions : vieillesse, naissance, meut, s’execute en même temps ^^’ Les conditions du this.getAge() sont tous ignorer.

              >! Bonjour/Bonsoir,
              >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

                Fait un print de this.getAge() ?
                ÉDIT : au pire si tu as vraiment besoin des paquets :

                Mais bon, je ne suis pas sûr qu’utiliser les paquets dans ce contexte soit une bonne idée.

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

                  Attention… ANARCHIE !

                  [11:30:44] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 2
                     [11:30:44] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 0
                     [11:30:44] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 4
                     [11:30:44] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 2
                     [11:30:44] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 4
                     [11:30:44] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 6
                     [11:30:44] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 6
                     [11:30:44] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 8
                     [11:30:44] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 8
                     [11:30:44] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 10
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 10
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 12
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 12
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 14
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 14
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 16
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 16
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 18
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 18
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 20
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 20
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 22
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 22
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 24
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 24
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 26
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 28
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 26
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 30
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 28
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 32
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 30
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 34
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 32
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 36
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 34
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 38
                     [11:30:45] [Server thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 40
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 36
                     [11:30:45] [Client thread/INFO] [STDOUT]: [EntityMobBouftou:onUpdate:45]: getAge() = 38
                  
                  

                  Il envoie aussi aux client et aucune condition n’est respecter, il execute les 3 d’un coup. (enfin, casiement, en 40 ticks quoi ^^)

                  EDIT : les paquets me servirons un jour de toute façon, mais c’est vrai que pour là, il ne devrais pas y en avoir besoin, enfin je l’espers…

                  EDIT2 : en faite il envoie bien au serveur, j’avais pas mit le truc au bon endroit… mais les condition…

                  >! Bonjour/Bonsoir,
                  >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

                    C’est étrange car comme tu peux le voir que ce soit côté client / serveur dans les deux cas la variable ne vaut pas 0.
                    Si tu fais un print de this.getAge()  % mort == 0 ?

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

                      Elle est initialisé a “true” 😕

                      Pourtant, mort est égal a 2400 ticks

                      Edit : Ha, je crois que j’ai compris, en faite le getAge() bouge que quand le mob est en mouvement, sinon, elle repasse a 0 !

                      Edit 2 : C’est bon !

                      ​ public void onUpdate()
                      
                          {
                          super.onUpdate();
                          int s = 20;
                          int m = 1200;
                          int h = 72000;
                          int j = 1728000;
                      
                          int vieillesse = s*5;//h*4;
                          int naissance = s*30;//h*18;
                          int mort =m;//j*2;
                      
                          EntityMobBouftonBlanc entityboufton = new EntityMobBouftonBlanc(this.worldObj);
                           entityboufton.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rand.nextFloat() * 360.0F, 0.0F);
                      
                           if (this.worldObj.getTotalWorldTime() % 1 == 0)
                           {
                           vie ++;
                           System.out.println(vie);
                           }
                      
                           if (this.worldObj.isRemote)    
                           {
                      
                               if (this.vie  % vieillesse == 0) // Vieillissement
                               {
                                   mobSizeOld *= 1.1F;
                                  System.out.println("veillit");
                               }
                           }
                      
                           if (!this.worldObj.isRemote)    
                           {
                      
                           if (this.vie == naissance) // naissance
                           {         
                               this.worldObj.spawnEntityInWorld(entityboufton);
                             System.out.println("naissance");
                           }
                      
                           if (this.vie == mort) // Meurt
                           {
                               this.setHealth(0.0F);
                             System.out.println("meurt");
                           }
                      
                          }
                      
                      

                      Vue que le getAge() ne folnctionnais que quand l’entité marchait, et qu’elle repassais a 0, c’etait pas bon !

                      Du coup j’ai crée une variable “vie” qui aumente de 1 a chaque tick du monde. Ducoup, tout fonctionne correctement !

                      Merci Robin ne m’avoir mit sur cette piste !

                      >! Bonjour/Bonsoir,
                      >! Vous désirez un Modèle ou une Texture pour votre Mod ? Vous pouvez faire un…

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

                      MINECRAFT FORGE FRANCE © 2018

                      Powered by NodeBB