Creer un mob avec techne



  • Bonjour,
    Je voudrais ajouter des mob totalement custom a mon mod avec des render créer via techne mais j'ai un soucis dans le clientproxy.

    RenderingRegistry.registerEntityRenderingHandler(Sourie.class, new RenderSourie(new RenderSourie()));{
    }
    

    Tous est bon sur le class du mob, le render de techne, et la classe principale. Mais dans le client proxy le:
    **"registerEntityRenderingHandler" **A l'erreur qui dit qu'il ne peut pas être appliquer a cette methode.
    "(new RenderSourie())" Me demande d'ajouter "public RenderSourie(RenderSourie renderSourie)" dans RenderSourie.class mais cette ligne y est déjà.

    J'ai regardé un peut dans les commentaire du tuto de robin4002 "Créer un modèle avec techne et l'appliquer à un mob". Mais les réponses ne mon pas aidé.

    Puis dans les demande d'aide résolue mais sa n'a pas avancé nomplus.
    Dans la class de FMl cpw.mods.fml.client.registry.registerEntityRenderingHandler
    Mais sa ne règle pas l'erreur pour autant.

    C'est pourquoi je fait appelle au personne qui on les compétence de faire ceci en 1.7.10.

    Voici toutes les classe concerné.

    Class principale:

    package fr.darv59.moremob.common;
    
    import java.awt.Color;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.registry.EntityRegistry;
    import cpw.mods.fml.common.registry.GameRegistry;
    import fr.darv59.moremob.proxy.CommonProxy;
    
    @Mod(modid = "moremob", name = "More Mod", version = "1.0.0")
    
    public class core {
    
    @Instance("moremob")
    public static core instance;
    
    public static final String MODID = "moremob";
    
    @SidedProxy(clientSide = "fr.darv59.moremob.proxy.ClientProxy", serverSide = "fr.darv59.moremob.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent envet){
    
    }
    
    @EventHandler
    public void init(FMLInitializationEvent envet){
    proxy.registerRender();
    
    EntityRegistry.registerGlobalEntityID(Sourie.class, "Sourie", EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB());
    EntityRegistry.registerModEntity(Sourie.class, "Sourie", 420, this.instance, 40, 1, true);
    
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent envet){
    
    }
    
    }
    

    Class du Mob:

    package fr.darv59.moremob.common;
    
    import net.minecraft.entity.SharedMonsterAttributes;
    import net.minecraft.entity.monster.EntityMob;
    import net.minecraft.world.World;
    
    public class Sourie extends EntityMob {
    
    public Sourie(World world) {
    super(world);
    }
    
    public void applyEntityAttrivutes(){
    this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10D);
    this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D);
    }
    
    }
    

    Class du render de techne:

    package fr.darv59.moremob.client;
    
    import fr.darv59.moremob.common.core;
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    import net.minecraft.util.ResourceLocation;
    
    public class RenderSourie extends ModelBase
    {
     //fields
       ModelRenderer Corp;
       ModelRenderer Tete;
       ModelRenderer queu;
       ModelRenderer queu2;
       ModelRenderer queu3;
       ModelRenderer oreilleD;
       ModelRenderer oreilleG;
    
       public final ResourceLocation texture = new ResourceLocation(core.MODID, "textures/entity/Sourie.png");
    
     public RenderSourie(RenderSourie rendersourie, float f)
     {
       textureWidth = 64;
       textureHeight = 32;
    
         Corp = new ModelRenderer(this, 46, 0);
         Corp.addBox(0F, 0F, 0F, 6, 3, 3);
         Corp.setRotationPoint(-4F, 22F, -1F);
         Corp.setTextureSize(64, 32);
         Corp.mirror = true;
         setRotation(Corp, 0F, 0F, 0F);
         Tete = new ModelRenderer(this, 38, 0);
         Tete.addBox(0F, 0F, 0F, 2, 2, 2);
         Tete.setRotationPoint(-5.5F, 21.5F, -0.5F);
         Tete.setTextureSize(64, 32);
         Tete.mirror = true;
         setRotation(Tete, 0F, 0F, 0F);
         queu = new ModelRenderer(this, 32, 0);
         queu.addBox(0F, 0F, 0F, 2, 1, 1);
         queu.setRotationPoint(1.5F, 22F, 0F);
         queu.setTextureSize(64, 32);
         queu.mirror = true;
         setRotation(queu, 0F, 0F, 0F);
         queu2 = new ModelRenderer(this, 26, 0);
         queu2.addBox(0F, 0F, 0F, 2, 1, 1);
         queu2.setRotationPoint(3.2F, 22F, 0F);
         queu2.setTextureSize(64, 32);
         queu2.mirror = true;
         setRotation(queu2, 0F, 0.296706F, 0F);
         queu3 = new ModelRenderer(this, 20, 0);
         queu3.addBox(0F, 0F, 0F, 2, 1, 1);
         queu3.setRotationPoint(5F, 22F, -0.6F);
         queu3.setTextureSize(64, 32);
         queu3.mirror = true;
         setRotation(queu3, 0F, -0.2617994F, 0F);
         oreilleD = new ModelRenderer(this, 16, 0);
         oreilleD.addBox(0F, 0F, 0F, 1, 1, 1);
         oreilleD.setRotationPoint(-5F, 21.5F, 0.8F);
         oreilleD.setTextureSize(64, 32);
         oreilleD.mirror = true;
         setRotation(oreilleD, 0.7853982F, 0F, 0F);
         oreilleG = new ModelRenderer(this, 12, 0);
         oreilleG.addBox(0F, 0F, 0F, 1, 1, 1);
         oreilleG.setRotationPoint(-5F, 21.5F, -1.2F);
         oreilleG.setTextureSize(64, 32);
         oreilleG.mirror = true;
         setRotation(oreilleG, 0.7853982F, 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);
       Corp.render(f5);
       Tete.render(f5);
       queu.render(f5);
       queu2.render(f5);
       queu3.render(f5);
       oreilleD.render(f5);
       oreilleG.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);
     }
    
    }
    

    ClientProxy

    package fr.darv59.moremob.proxy;
    
    import net.minecraft.client.model.ModelBase;
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import fr.darv59.moremob.client.RenderSourie;
    import fr.darv59.moremob.common.Sourie;
    
    public class ClientProxy extends CommonProxy{
    
    public void registerRender() {
    
    RenderingRegistry.registerEntityRenderingHandler(Sourie.class, new RenderSourie(new RenderSourie();{
    
    }
    
    }
    
    }
    

    Voila merci de l'aide qui sera apporté.


  • Administrateurs

    La classe que tu as appelé RenderSourie devrait s'appeler ModelSouris. Et tu devrais avoir une autre classe nommé RenderSouris.
    Et du-coup la méthode devrait ressemble à ça :

    RenderingRegistry.registerEntityRenderingHandler(Sourie.class, new RenderSourie(new ModelSouris()));



  • D'accord mais du coup dans la RenderSouris il devrais avoir quoi ?
    –-----------------------------------------------------------

    J'ai modifier un peut Suite a ce que tu m'a dit sa donne donc:

    ModelSourie

    package fr.darv59.dofmod.client;
    
    import fr.darv59.dofmod.common.core;
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    import net.minecraft.util.ResourceLocation;
    
    public class ModelSourie extends ModelBase
    {
     //fields
       ModelRenderer Corp;
       ModelRenderer Tete;
       ModelRenderer queu;
       ModelRenderer queu2;
       ModelRenderer queu3;
       ModelRenderer oreilleD;
       ModelRenderer oreilleG;
    
     public ModelSourie(RenderSourie renderSourie)
     {
       textureWidth = 64;
       textureHeight = 32;
    
         Corp = new ModelRenderer(this, 46, 0);
         Corp.addBox(0F, 0F, 0F, 6, 3, 3);
         Corp.setRotationPoint(-4F, 22F, -1F);
         Corp.setTextureSize(64, 32);
         Corp.mirror = true;
         setRotation(Corp, 0F, 0F, 0F);
         Tete = new ModelRenderer(this, 38, 0);
         Tete.addBox(0F, 0F, 0F, 2, 2, 2);
         Tete.setRotationPoint(-5.5F, 21.5F, -0.5F);
         Tete.setTextureSize(64, 32);
         Tete.mirror = true;
         setRotation(Tete, 0F, 0F, 0F);
         queu = new ModelRenderer(this, 32, 0);
         queu.addBox(0F, 0F, 0F, 2, 1, 1);
         queu.setRotationPoint(1.5F, 22F, 0F);
         queu.setTextureSize(64, 32);
         queu.mirror = true;
         setRotation(queu, 0F, 0F, 0F);
         queu2 = new ModelRenderer(this, 26, 0);
         queu2.addBox(0F, 0F, 0F, 2, 1, 1);
         queu2.setRotationPoint(3.2F, 22F, 0F);
         queu2.setTextureSize(64, 32);
         queu2.mirror = true;
         setRotation(queu2, 0F, 0.296706F, 0F);
         queu3 = new ModelRenderer(this, 20, 0);
         queu3.addBox(0F, 0F, 0F, 2, 1, 1);
         queu3.setRotationPoint(5F, 22F, -0.6F);
         queu3.setTextureSize(64, 32);
         queu3.mirror = true;
         setRotation(queu3, 0F, -0.2617994F, 0F);
         oreilleD = new ModelRenderer(this, 16, 0);
         oreilleD.addBox(0F, 0F, 0F, 1, 1, 1);
         oreilleD.setRotationPoint(-5F, 21.5F, 0.8F);
         oreilleD.setTextureSize(64, 32);
         oreilleD.mirror = true;
         setRotation(oreilleD, 0.7853982F, 0F, 0F);
         oreilleG = new ModelRenderer(this, 12, 0);
         oreilleG.addBox(0F, 0F, 0F, 1, 1, 1);
         oreilleG.setRotationPoint(-5F, 21.5F, -1.2F);
         oreilleG.setTextureSize(64, 32);
         oreilleG.mirror = true;
         setRotation(oreilleG, 0.7853982F, 0F, 0F);
     }
    
    public ModelSourie() {
    // TODO Auto-generated constructor stub
    }
    
    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);
       Corp.render(f5);
       Tete.render(f5);
       queu.render(f5);
       queu2.render(f5);
       queu3.render(f5);
       oreilleD.render(f5);
       oreilleG.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);
     }
    
    }
    

    RenderSourie

    package fr.darv59.dofmod.client;
    
    import fr.darv59.dofmod.common.Sourie;
    import fr.darv59.dofmod.common.core;
    import fr.darv59.dofmod.creativetabs.ressources;
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.renderer.entity.RenderManager;
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.util.ResourceLocation;
    
    public class RenderSourie extends ModelBase{
    
    public RenderSourie(ModelBase model, float shadow){
    super();
    }
    
           //Ce constructeur est ajouter par le ClientProxy
    public RenderSourie(ModelSourie modelSourie) {
    
    }
    
    public final ResourceLocation texture = new ResourceLocation(core.MODID, "textures/entity/Sourie.png");
    
    protected ResourceLocation getEntityTexture(EntityLiving living){
    return this.getSourieTexture((Sourie)living);
    }
    
    private ResourceLocation getSourieTexture(Sourie sourie) {
    
    return texture;
    }
    
    }
    

    Le ClientProxy

    package fr.darv59.dofmod.proxy;
    
    import net.minecraft.client.model.ModelBase;
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import fr.darv59.dofmod.client.ModelSourie;
    import fr.darv59.dofmod.client.RenderSourie;
    import fr.darv59.dofmod.common.Sourie;
    
    public class ClientProxy extends CommonProxy{
    
    public void registerRender() {
    
    RenderingRegistry.registerEntityRenderingHandler(Sourie.class, new RenderSourie(new ModelSourie()));{
    }
    
    }
    
    }
    

    dans ce cas l'erreur disparais mais reste toujours le registerEntityRenderingHandler
    qui n'est pas applicable sur cette argument** (Sourie.class, new RenderSourie(new ModelSourie()))**
    et me demande donc de remplacer par **registerBlockHandler **Qui n'a je pense strictement rien a faire ici ^^

    Voila, autant créer un mob tous simple est simple...
    Mais avec techne c'est la première fois et je galère un peut.


  • Administrateurs

    La classe de ton rendu doit être extends RenderLiving. Et le constructeur est complètement faux du-coup.

    Il y a des tutoriels sur le forum et sur la chaine youtube, ils ne sont pas là pour rien.



  • Oui je l'est changer entre temps, une petite erreur d’inattention a cause du Ctrl espace.

    Plus erreur mais c'est un rectangle de 2 de haut et blanc qui spawn a la place du mob.
    De quel classe cela peut venir ?


  • Administrateurs

    Renvoie la classe du rendu, la classe du modèle, le client proxy, le common proxy et la classe principale tel qu'elles sont actuellement.



  • Rendu:

    package fr.darv59.moremob.client;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.renderer.entity.RenderLiving;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLiving;
    import net.minecraft.util.ResourceLocation;
    import fr.darv59.moremob.common.Sourie;
    import fr.darv59.moremob.common.core;
    
    public class RenderSourie extends RenderLiving{
    
    private static final ResourceLocation mobTextures = new ResourceLocation(core.MODID + "textures/entity/Sourie.png");
    
    public RenderSourie(ModelBase model, float shadow) {
    super(model, shadow);
    }
    
    protected ResourceLocation getEntityTexture(Sourie sourie){
    return mobTextures;
    
    }
    
    protected ResourceLocation getEntityTexture(Entity sourie){
    return this.getEntityTexture((Sourie)sourie);
    
    }
    
    }
    

    Pour le return this….
    J'ai tenter de mettre** return bindEntityTexture((Sourie)sourie);** Mais la methode est vide.

    Model

    package fr.darv59.moremob.client;
    
    import net.minecraft.client.model.ModelBase;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    
    public class ModelSourie extends ModelBase
    {
     //fields
       ModelRenderer Corp;
       ModelRenderer Tete;
       ModelRenderer queu;
       ModelRenderer queu2;
       ModelRenderer queu3;
       ModelRenderer oreilleD;
       ModelRenderer oreilleG;
    
     public ModelSourie()
     {
       textureWidth = 64;
       textureHeight = 32;
    
         Corp = new ModelRenderer(this, 46, 0);
         Corp.addBox(0F, 0F, 0F, 6, 3, 3);
         Corp.setRotationPoint(-4F, 22F, -1F);
         Corp.setTextureSize(64, 32);
         Corp.mirror = true;
         setRotation(Corp, 0F, 0F, 0F);
         Tete = new ModelRenderer(this, 38, 0);
         Tete.addBox(0F, 0F, 0F, 2, 2, 2);
         Tete.setRotationPoint(-5.5F, 21.5F, -0.5F);
         Tete.setTextureSize(64, 32);
         Tete.mirror = true;
         setRotation(Tete, 0F, 0F, 0F);
         queu = new ModelRenderer(this, 32, 0);
         queu.addBox(0F, 0F, 0F, 2, 1, 1);
         queu.setRotationPoint(1.5F, 22F, 0F);
         queu.setTextureSize(64, 32);
         queu.mirror = true;
         setRotation(queu, 0F, 0F, 0F);
         queu2 = new ModelRenderer(this, 26, 0);
         queu2.addBox(0F, 0F, 0F, 2, 1, 1);
         queu2.setRotationPoint(3.2F, 22F, 0F);
         queu2.setTextureSize(64, 32);
         queu2.mirror = true;
         setRotation(queu2, 0F, 0.296706F, 0F);
         queu3 = new ModelRenderer(this, 20, 0);
         queu3.addBox(0F, 0F, 0F, 2, 1, 1);
         queu3.setRotationPoint(5F, 22F, -0.6F);
         queu3.setTextureSize(64, 32);
         queu3.mirror = true;
         setRotation(queu3, 0F, -0.2617994F, 0F);
         oreilleD = new ModelRenderer(this, 16, 0);
         oreilleD.addBox(0F, 0F, 0F, 1, 1, 1);
         oreilleD.setRotationPoint(-5F, 21.5F, 0.8F);
         oreilleD.setTextureSize(64, 32);
         oreilleD.mirror = true;
         setRotation(oreilleD, 0.7853982F, 0F, 0F);
         oreilleG = new ModelRenderer(this, 12, 0);
         oreilleG.addBox(0F, 0F, 0F, 1, 1, 1);
         oreilleG.setRotationPoint(-5F, 21.5F, -1.2F);
         oreilleG.setTextureSize(64, 32);
         oreilleG.mirror = true;
         setRotation(oreilleG, 0.7853982F, 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);
       Corp.render(f5);
       Tete.render(f5);
       queu.render(f5);
       queu2.render(f5);
       queu3.render(f5);
       oreilleD.render(f5);
       oreilleG.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);
     }
    
    }
    

    Client

    package fr.darv59.moremob.proxy;
    
    import net.minecraft.client.model.ModelBase;
    import cpw.mods.fml.client.registry.RenderingRegistry;
    import fr.darv59.moremob.client.ModelSourie;
    import fr.darv59.moremob.client.RenderSourie;
    import fr.darv59.moremob.common.Sourie;
    
    public class ClientProxy extends CommonProxy{
    
    public void registerRenderThings() {
    
    RenderingRegistry.registerEntityRenderingHandler(Sourie.class, new RenderSourie(new ModelSourie(),0));{
    }
    
    }
    
    }
    

    Common proxy

    package fr.darv59.moremob.proxy;
    
    public class CommonProxy {
    
    public void registerRender(){
    
    }
    
    }
    

    Class du mod

    package fr.darv59.moremob.common;
    
    import java.awt.Color;
    
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.Entity;
    import net.minecraft.item.Item;
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.Mod.EventHandler;
    import cpw.mods.fml.common.Mod.Instance;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.registry.EntityRegistry;
    import cpw.mods.fml.common.registry.GameRegistry;
    
    @Mod(modid = "moremob", name = "More Mod", version = "1.0.0")
    
    public class core {
    
    @Instance("moremob")
    public static core instance;
    
    public static final String MODID = "moremob";
    
    @SidedProxy(clientSide = "fr.darv59.moremob.proxy.ClientProxy", serverSide = "fr.darv59.moremob.proxy.CommonProxy")
    public static CommonProxy proxy;
    
    @EventHandler
    public void preInit(FMLPreInitializationEvent envet){
    
    }
    
    @EventHandler
    public void init(FMLInitializationEvent envet){
    proxy.registerRender();
    
    EntityRegistry.registerGlobalEntityID(Sourie.class, "Sourie", EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB());
    EntityRegistry.registerModEntity(Sourie.class, "Sourie", 420, this.instance, 40, 1, true);
    
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent envet){
    
    }
    
    }
    

    Voila avec ceci tous ce passe bien mise a part la forme et la textures qui ne sont pas prit en compte


  • Administrateurs

    La fonction
    public void registerRenderThings() {

    Dans le proxy client devrait être :

    @Override
    public void registerRender(){



  • Juste pour quelque lettres ….
    Soucis réglé merci à toi !
    Et bonne continuation.