Questions à propos des mobs
-
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.
-
Ok Merci beaucoup!
Je vais aller tester tout ça
-
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?
-
Il faut que tu ajoutes la hauteur avec GL11.glTranslatef
Pour l’ia je ne sais pas.
-
Ou déplace le scale après la translation, l’ordre peut beaucoup influer
-
Merci beaucoup! Ça fonctionne en rajoutant de la hauteur.
J’ai encore deux petites questions:- Pour ajouter un deuxième son custom, pour, par exemple, un autre animal, je dois créer un second fichier sounds.json?
- Est-il possible d’avoir plusieurs sons dans le getLivingSound qui seraient random? Comment faut-il faire?
-
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 ...; } } -
Tu peux aussi remplacer le ```java
Random rand = new Random(); //Par :
Random rand = worldObj.rand; -
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.
-
Merci à vous pour vos réponses
