• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Questions à propos des mobs

    1.7.x
    1.7.10
    5
    11
    1361
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Valina02
      Valina02 last edited by

      Bonjour à tous,
      Comme dit dans le titre, j’ai quelques questions sur les mobs, en particulier les animaux.

      1. J’ai créé un mod qui rajoute des animaux. Ils peuvent donc avoir des bébés. Cependant, le bébé est de la même taille que les deux parents. J’aimerais donc savoir comment faire pour que celui-ci soit plus petit que ses deux parents et qu’il grandisse au bout de 5 minutes, comme pour les mobs de minecraft (vache, cochon…) mais j’aimerais aussi qu’il ait une tête proportionnelle à son corps (donc pas une grosse tête comme les animaux de minecraft 😉 )
      2. Toujours pour ces mêmes animaux j’aimerais leur ajouter des sons customs, mais quand j’utilise le code ci-dessous (trouvé dans la classe EntityCow), dans la classe de mon animal, avec, à la place de “mob.cow.say”, ceci: “animalia:sounds/mob/redwolf_howl.wav” (mon MODID puis les différents fichiers), ça ne fonctionne pas, il ne font aucun bruit  😕  Même chose pour getHurtSound et getDeathSound
         protected String getLivingSound()
            {
                return "mob.cow.say";
            }
        
        Que faut-il faire pour que ces sons fonctionnent?
      3. J’ai aussi créé mes propres modèles sur techne mais je les ai fais trop grand et je ne veux pas recommencer car si je les fais plus petit, ce sera impossible de mettre des petits détails comme les oreilles ou les pattes. J’ai donc essayé de réduire leur taille dans techne mais quand je diminue le GIScale et que je réexporte le model du mob, celui-ci garde la même taille qu’auparavant. Donc est-il possible de réduire leur taille?

      Merci d’avance pour vos réponses

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

        Salut et bienvenue sur MFF.

        Pour la question 1+3, tu peux gérer le scale dans la fonction render du modèle.
        Voici le code de ModelQuadruped :

           public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
           {
               this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn);
        
               if (this.isChild)
               {
                   float f = 2.0F;
                   GlStateManager.pushMatrix();
                   GlStateManager.translate(0.0F, this.childYOffset * scale, this.childZOffset * scale);
                   this.head.render(scale);
                   GlStateManager.popMatrix();
                   GlStateManager.pushMatrix();
                   GlStateManager.scale(1.0F / f, 1.0F / f, 1.0F / f);
                   GlStateManager.translate(0.0F, 24.0F * scale, 0.0F);
                   this.body.render(scale);
                   this.leg1.render(scale);
                   this.leg2.render(scale);
                   this.leg3.render(scale);
                   this.leg4.render(scale);
                   GlStateManager.popMatrix();
               }
               else
               {
                   this.head.render(scale);
                   this.body.render(scale);
                   this.leg1.render(scale);
                   this.leg2.render(scale);
                   this.leg3.render(scale);
                   this.leg4.render(scale);
               }
           }
        

        Comme tu peux le voir il y a un cas spécifique si l’entité est un enfant (this.isChild). La tête est rendu de façon normal puis il y a un GlStateManager.scale(1.0F / f, 1.0F / f, 1.0F / f); (ou f vaut 2.0, donc ça revient à faire un scale de 0.5, soit deux fois plus petit).

        Pour la qestion 2, dans le return mets “modid:id du son”.
        Ensuite dans le dossier src/main/resources -> assets/modid/ créé un nouveau fichier nommé “sounds.json”.
        Dans ce dernier ajoutes :

        {
           "id du son": {
               "category": "neutral",
               "sounds": [
                   {
                       "name": "modid:nom du son",
                       "stream": false
                   }
               ]
           }
        }
        

        Ensuite dans le dossier src/main/resources -> assets/modid/sounds ajoute le nom fichier nom du son.ogg.

        1 Reply Last reply Reply Quote 1
        • Valina02
          Valina02 last edited by

          Ok Merci beaucoup!
          Je vais aller tester tout ça 😉

          1 Reply Last reply Reply Quote 0
          • Valina02
            Valina02 last edited by

            Merci ça marche nickel pour les sons et les bébés 😄

            Par contre pour ma question 3, j’ai essayé ça, en changeant la valeur de f:

            
                    if (this.isChild)
                   {
                       float f = 2.0F;
                       GL11.glPushMatrix();
                       GL11.glScalef(1.0F / f, 1.0F / f, 1.0F / f);
                       GL11.glTranslatef(0.0F, 24.0F * scale, 0.0F);
                       this.head.render(scale);
                       this.body.render(scale);
                       this.leg1.render(scale);
                       this.leg2.render(scale);
                       this.leg3.render(scale);
                       this.leg4.render(scale);
                       GL11.glPopMatrix();
                   }
                   else
                   {
                       float f = 2.0F;
                       GL11.glPushMatrix();
                       GL11.glScalef(1.0F / f, 1.0F / f, 1.0F / f);
                       GL11.glTranslatef(0.0F, 24.0F * scale, 0.0F);
                       this.head.render(scale);
                       this.body.render(scale);
                       this.leg1.render(scale);
                       this.leg2.render(scale);
                       this.leg3.render(scale);
                       this.leg4.render(scale);
                       GL11.glPopMatrix();
                   }
            

            Sauf que j’arrive à des trucs bizarres. Voici les différentes valeurs que j’ai testé

            • Parent f=2.0F et enfant f=2.0 > Tout marche nickel: ils sont tous les deux plus petit mais ils ont la même taille, ce qui ne m’arrange pas.
            • Parent f=1.5F et enfant f=2.0 > Le parent est sous le sol
            • Parent f=2.0F et enfant f=3.0 > L’enfant est dans les air

            J’ai aussi ce problème sur techne quand je change la deuxième variable de GIScale

            Par contre, changer la taille du bébé m’a permis de voir un autre problème, pas trop dérangeant en soi mais qui est un peu spécial. C’est le parent qui suit l’enfant et non l’inverse pourtant pour l’ia du mob j’ai utilisé ça:

            this.tasks.addTask(4, new EntityAIFollowParent(this, 1.1D));
            

            que j’ai copier-coller de l’ia du cochon, chez qui tout est normal. Comment le résoudre?

            1 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

              Il faut que tu ajoutes la hauteur avec GL11.glTranslatef

              Pour l’ia je ne sais pas.

              1 Reply Last reply Reply Quote 0
              • SCAREX
                SCAREX last edited by

                Ou déplace le scale après la translation, l’ordre peut beaucoup influer

                Site web contenant mes scripts : http://SCAREXgaming.github.io

                Pas de demandes de support par MP ni par skype SVP.
                Je n'accepte sur skype que l…

                1 Reply Last reply Reply Quote 0
                • Valina02
                  Valina02 last edited by

                  Merci beaucoup! Ça fonctionne en rajoutant de la hauteur.
                  J’ai encore deux petites questions:

                  1. Pour ajouter un deuxième son custom, pour, par exemple, un autre animal, je dois créer un second fichier sounds.json?
                  2. Est-il possible d’avoir plusieurs sons dans le getLivingSound qui seraient random? Comment faut-il faire?
                  1 Reply Last reply Reply Quote 0
                  • BrokenSwing
                    BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                    Pour le son random :

                    
                    protected String getLivingSound()
                    {
                    Random rand = new Random();
                    int song = rand.nextInt(5);
                    switch(int) {
                    case 0:
                    return ….;
                    case 1:
                    return ....;
                    case ....
                    default:
                    return ...;
                    }
                    }
                    
                    
                    1 Reply Last reply Reply Quote 1
                    • AymericRed
                      AymericRed last edited by

                      Tu peux aussi remplacer le ```java
                      Random rand = new Random(); //Par :
                      Random rand = worldObj.rand;

                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                      1 Reply Last reply Reply Quote 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

                        Tous doit être mit dans le même fichier sounds.json.
                        Il suffit de suivre la structure du json.

                        {
                        "id du son": {
                        "category": "neutral",
                        "sounds": [
                        {
                        "name": "modid:nom du son",
                        "stream": false
                        }
                        ]
                        },
                        {
                        "id d'un autre son": {
                        "category": "neutral",
                        "sounds": [
                        {
                        "name": "modid:nom de cette autre son",
                        "stream": false
                        }
                        ]
                        }
                        }
                        

                        Pour le random, le système de son de minecaft peut directement le gérer.
                        Regardes par exemple les sons de la vache (extrait du fichier sounds.json de minecraft) :

                        "mob.cow.hurt": {
                        "category": "neutral",
                        "sounds": [
                        "mob/cow/hurt1",
                        "mob/cow/hurt2",
                        "mob/cow/hurt3"
                        ]
                        },
                        "mob.cow.say": {
                        "category": "neutral",
                        "sounds": [
                        "mob/cow/say1",
                        "mob/cow/say2",
                        "mob/cow/say3",
                        "mob/cow/say4"
                        ]
                        },
                        "mob.cow.step": {
                        "category": "neutral",
                        "sounds": [
                        "mob/cow/step1",
                        "mob/cow/step2",
                        "mob/cow/step3",
                        "mob/cow/step4"
                        ]
                        },
                        

                        Il suffit d’indiquer plusieurs fichier ogg.

                        1 Reply Last reply Reply Quote 0
                        • Valina02
                          Valina02 last edited by

                          Merci à vous pour vos réponses 🙂

                          1 Reply Last reply Reply Quote 0
                          • 1 / 1
                          • First post
                            Last post
                          Design by Woryk
                          Contact / Mentions Légales

                          MINECRAFT FORGE FRANCE © 2018

                          Powered by NodeBB