Création d'une entité (mob passif)



  • Bonjour la communauté !

    Etant nouveau sur le forum et sur Forge, je me tourne vers vous pour m'aider à résoudre un soucis.

    En effet depuis 2 jours j'essaye de créer un mob passif. Pour le moment je tente un cochon personnalisé. Mais en suivant le tuto robin4002 je n'arrive pas à en venir à bout (dispo ici : https://www.minecraftforgefrance.fr/topic/574/créer-un-mob-basique)

    Je vais tout d'abord vous donner les informations nécessaire :
    Forge: forge-1.12.2-14.23.4.2739
    Minecraft: 1.12.2
    IDE: IntelliJ

    La classe EntityPiggy (aucun soucis) :

    public class EntityPiggy extends EntityMob {
    
        public EntityPiggy(World world)
        {
            super(world);
        }
    
        public void applyEntityAttributes()
        {
            super.applyEntityAttributes();
    
            this.getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(20D);
        }
    
    
    }
    

    La classe RenderPrimitif (Pas d'erreur mais la variable texture je sais pas où on l'utilise) :

    public class RenderPrimitif extends RenderBiped {
    
        public final ResourceLocation texture = new ResourceLocation(ModPrimitif.MODID, "textures/entity/piggy.png");
    
        public RenderPrimitif(RenderManager render, ModelBiped model, float shadow) {
            super(render, model, shadow);
        }
    
        protected ResourceLocation getEntityTexture(EntityLiving living)
        {
            return this.getMobTexture((EntityPiggy)living);
        }
    
        private ResourceLocation getMobTexture(EntityPiggy mobPiggy)
        {
            return texture;
        }
    }
    

    La classe principale (j'ai mis seulement la fonction init, en commentaire les problème perçu) :

    // 2eme : Charge les recettes, les events, les rendus ...
        @Mod.EventHandler
        public void init(FMLInitializationEvent e)
        {
            proxy.registerRender();
            
            // Erreur sur registerGlobalEntityID qui n'existe pas 
            EntityRegistry.registerGlobalEntityID(EntityMobTutoriel.class, "mobTutoriel", EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 0, 255).getRGB(), new Color(255, 0, 0).getRGB());
            // De base il y avait un soucis mais je pense l'avoir corrigé
            EntityRegistry.registerModEntity(new ResourceLocation(ModPrimitif.MODID, "entitypiggy"), EntityPiggy.class, "mobPiggy", 420, this.instance, 40, 2, true);
        }
    

    Et enfin le client proxy :

    public class ClientProxy extends CommonProxy {
    
        @Override
        public void registerRender()
        {
            System.out.println("méthode coté Client");
            // Le soucis est lié au constructeur RenderPrimitif qui possède 3 paramètres mais le premier je ne sais pas à quoi il sert, et si je l'enlève comme dans le tuto j'ai une erreur
            RenderingRegistry.registerEntityRenderingHandler(EntityPiggy.class, new RenderPrimitif(new ModelBiped(), 0.5F));
        }
    }
    
    

    J'espère que vous pourrez m'aider et je remercie d'avance tous ceux qui se pencherons dessus.
    Je le rappel je suis débutant sur forge, le java je maîtrise 😉

    Cordialement,



  • Bonjour,
    Dans la fonction init, tu n'as plus besoin d'utiliser registerGlobalEntityID. Si tu veux ajouter un œuf de spawn pour ton entity, il y a la méthode EntityRegistry.registerEgg ou alors, tu peux utiliser la deuxième version de registerModEntity qui prends les couleurs de l’œuf en paramètres.
    Pour le rendu, il faut utiliser un IRenderFactory qui permet d'accéder à un RenderManager pour construire le Render.



  • Ah super merci, j'avance ! c'est plutôt cool.
    J'attends de complètement terminer l'entité pour mettre en résolu 🙂


Log in to reply