Résolu Problème de render/Techne pour un mob
-
Bonjour à tous
Désolé de vous dérangez encore une fois, mais mon mob à un problème :
Regardons cette photo :
Le rectangle rouge montre que cette partie en noire, bah ça n’a rien a faire ici
Pour les flèches, des “morceaux” bougent comme pour le bras d’un joueur immobile.
Je pense que cela vient de l’extends RenderBiped. Je voulais mette RenderBase ou un truc comme ça, mais rien ne fonctionne.J’espère que vous voyez ce que je veut faire. Voici mes codes :
ModelBoss.java
import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; public class ModelBoss extends ModelBiped { //fields ModelRenderer Jambe_1; ModelRenderer Jambe_2; ModelRenderer Corps_1; ModelRenderer Corps_2; ModelRenderer Tete_1; public ModelBoss() { textureWidth = 64; textureHeight = 64; Jambe_1 = new ModelRenderer(this, 29, 1); Jambe_1.addBox(0F, 0F, 0F, 6, 16, 7); Jambe_1.setRotationPoint(2F, 8F, -3F); Jambe_1.setTextureSize(64, 64); Jambe_1.mirror = true; setRotation(Jambe_1, 0F, 0F, 0F); Jambe_2 = new ModelRenderer(this, 0, 0); Jambe_2.addBox(0F, 0F, 0F, 6, 16, 7); Jambe_2.setRotationPoint(-8F, 8F, -3F); Jambe_2.setTextureSize(64, 64); Jambe_2.mirror = true; setRotation(Jambe_2, 0F, 0F, 0F); Corps_1 = new ModelRenderer(this, 0, 38); Corps_1.addBox(0F, 0F, 0F, 18, 18, 7); Corps_1.setRotationPoint(-9F, -10F, -3F); Corps_1.setTextureSize(64, 64); Corps_1.mirror = true; setRotation(Corps_1, 0F, 0F, 0F); Corps_2 = new ModelRenderer(this, 18, 27); Corps_2.addBox(0F, 0F, 0F, 3, 3, 2); Corps_2.setRotationPoint(-1.98F, -3F, 4F); Corps_2.setTextureSize(64, 64); Corps_2.mirror = true; setRotation(Corps_2, 0F, 0F, 0F); Tete_1 = new ModelRenderer(this, 0, 26); Tete_1.addBox(0F, 0F, 0F, 4, 3, 3); Tete_1.setRotationPoint(-2F, -13F, -1F); Tete_1.setTextureSize(64, 64); Tete_1.mirror = true; setRotation(Tete_1, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); Jambe_1.render(f5); Jambe_2.render(f5); Corps_1.render(f5); Corps_2.render(f5); Tete_1.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); } }
RenderMobBoss.java
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.EntityLiving; import net.minecraft.util.ResourceLocation; import fr.zery59.modnawak.common.EntityMobBoss; import fr.zery59.modnawak.common.EntityMobKevin; import fr.zery59.modnawak.common.Nawak; public class RenderMobBoss extends RenderBiped { public final ResourceLocation texture = new ResourceLocation(Nawak.MODID, "textures/entity/Boss.png"); public RenderMobBoss(ModelBiped model, float shadow) { super(model, shadow); } protected ResourceLocation getEntityTexture(EntityLiving living) { return this.getMobBossTexture((EntityMobBoss)living); } private ResourceLocation getMobBossTexture(EntityMobBoss boss) { return texture; } }
Et mon ClientProxy.java
import net.minecraft.client.model.ModelBiped; import cpw.mods.fml.client.registry.RenderingRegistry; import fr.zery59.modnawak.client.ModelBoss; import fr.zery59.modnawak.client.RenderMobBoss; import fr.zery59.modnawak.client.RenderMobKevin; import fr.zery59.modnawak.common.EntityMobBoss; import fr.zery59.modnawak.common.EntityMobKevin; public class ClientProxy extends CommonProxy { @Override public void registerRender() { RenderingRegistry.registerEntityRenderingHandler(EntityMobKevin.class, new RenderMobKevin(new ModelBiped(), 0.5F)); RenderingRegistry.registerEntityRenderingHandler(EntityMobBoss.class, new RenderMobBoss(new ModelBoss(), 0.5F)); } }
Si vous ne comprenez pas ce que je veut dire, bah j’essayerais de mieux l’expliquer.
-
Si tu veux un Render basique, tu mets RenderLiving.
-
Essaye de faire
public class ModelBoss extends ModelBase -
Alors, robin4002 :
Je mets ModelBase -> j’import puis sauvegarde -> erreur dans ClientProxy, Le constructeur RenderMobBoss(ModelBoss, float) n’est pas défini
Et Fine33 : J’extends en RenderLiving -> Je dois rajouter :
-```java
@Overrideprotected ResourceLocation getEntityTexture(Entity var1)
{
return null;
}Je laisse return null; le mob n'apparaît pas et return texture; rien de change :/ Ou alors c'est moi qui fait n'importe quoi (90% de chance pour cette option)
-
Tu as bien mis ça dans le ClientProxy ?
**[size=x-smallpublic]** **[size=x-smallvoid]** RenderInformation() { RenderingRegistry.*registerEntityRenderingHandler*(EntityDeTonrMob.**[size=x-smallclass]**, **[size=x-smallnew]** RenderDeTonMob(**[size=x-smallnew]** ModelDeTonMob(), 0.3F)); } }
-
Et tu mets un return EntityTexture au lieu de return false
-
Oo je n’ai jamais vu cette ligne de code dans un tuto. Bah je viens de le rajouter, et maintenant j’obtiens ça :
-
Dans la classe du model, t’as des mirrors des fois : tu les mets tous en false.
-
@‘zery59’:
Alors, robin4002 :
Je mets ModelBase -> j’import puis sauvegarde -> erreur dans ClientProxy, Le constructeur RenderMobBoss(ModelBoss, float) n’est pas défini
Et Fine33 : J’extends en RenderLiving -> Je dois rajouter :
@Override protected ResourceLocation getEntityTexture(Entity var1) { return null; }
Je laisse return null; le mob n’apparaît pas et return texture; rien de change Ou alors c’est moi qui fait n’importe quoi (90% de chance pour cette option)
Tu as bien changé le modèle et pas le rendu ?
-
Fine33 : Je les ai mis en false, pareil toujours les bâtons blancs
robin4002 : Oui, je parle bien du model (1 ère class du premier post)
-
Tu as bien mis Return EntityTexture ici ?
%(#646464)[@Override ] **protected** ResourceLocation getEntityTexture(Entity var1) %(#666600)[{ ] **return** **null**%(#666600)[; ] }
-
Tu as bien mis Return EntityTexture ici ?
%(#646464)[@Override ] **protected** ResourceLocation getEntityTexture(Entity var1) %(#666600)[{ ] **return** **null**%(#666600)[; ] }
-
J’ai essayé, mais si je mets EntityTexture, :
EntityTexture ne peut pas être résolu en tant que variable
Mais comme j’avais déclaré : ```java
public final ResourceLocation texture blablablaDonc je pensais que return texture; allait aussi.
-
Tu dois plutôt déclarer ta texture comme ça
[size=x-small**private**] **[size=x-smallstatic]** **[size=x-smallfinal]** ResourceLocation *[size=x-smallEntityTexture]* = **[size=x-smallnew]** ResourceLocation([size=x-small"MODID:textures/mobs/TonMob.png"]);
-
J’ai changé tout cela, mais j’ai toujours les bâtons blancs (C’est depuis que j’ai extends la classe en RenderLiving ou les mirror en false)
-
Dans ton CommonProxy, t’as bien la fonction RenderInformation ?
-
Tu parles de cet fonction ? :
public void RenderInformation() { RenderingRegistry.registerEntityRenderingHandler(EntityMobBoss.class, new RenderMobBoss(new ModelBoss(), 0.3F)); }
Je vais essayer de mettre cet fonction dans le CommonProxy, mais aucun tuto sur ce forum n’en parle
Je viens de l’ajouter, j’ai toujours les Freedent sur pattes
-
Tu la mets vide. Je sais qu’il y a pas ça dans les tutos mais c’est ça que j’ai ^^
-
Même vide, cela ne change rien.
Si j’enlève cet fonction de commonProxy + ClientProxy, je revient au point de départ (1er screen du 1er post)
-
Dans la fonction init de ta classe principale, tu as proxy.RenderInformation ? Tu laisse la fonction RenderInformation dans les 2 proxys.