MFF

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

    Spawn d'un entity buguer

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    9 Messages 3 Publieurs 1.5k 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.
    • KujarothK Hors-ligne
      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
      • PatatoufetP Hors-ligne
        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
        • KujarothK Hors-ligne
          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
          • robin4002R Hors-ligne
            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
            • KujarothK Hors-ligne
              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
              • robin4002R Hors-ligne
                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
                • KujarothK Hors-ligne
                  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
                  • robin4002R Hors-ligne
                    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
                    • KujarothK Hors-ligne
                      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
                      ContactMentions Légales

                      MINECRAFT FORGE FRANCE © 2024

                      Powered by NodeBB