• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Problème Ajout de Mob (et techne)

    Sans suite
    1.6.2
    4
    11
    3078
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • D
      Destroy_30 dernière édition par

      Bonjour,
      Je travaille depuis quelques jours sur l’ajout d’un nouveau mob avec un model Techne.
      C’est un mob Biped (enfin, pour moi biped ça veut dire qui a deux jambes, j’espère ne pas me tromper) c’est un grand mob (une sorte de Yéti)
      J’ai suivi les deux tutos sur le site pour la création d’un mob et l’application d’un modèle techne à celui-ci
      Malheureusement dès que je tente de faire spawner le mob une erreur apparait dans la console (mais le jeu continue de tourner) :
      Skipping Entity with id 2
      J’ai donc remplacé l’id obtenu par le “getunicentity” par un autre id, mais toujours le même problème avec l’id que je choisis.

      Après multiples tests je n’arrive toujours pas à régler ce problème….
      Je vous donne donc mes codes pour voir si vous vous y voyez clair :

      La classe du model “Abominable” :

      //
      package mes.mod.client;
      
      import net.minecraft.client.model.ModelBiped;
      import net.minecraft.client.model.ModelRenderer;
      import net.minecraft.entity.Entity;
      
      public class Abominable extends ModelBiped
      {
      //fields
      ModelRenderer Shape1;
      ModelRenderer Shape2;
      ModelRenderer Shape3;
      ModelRenderer Shape4;
      ModelRenderer Shape5;
      ModelRenderer Shape6;
      ModelRenderer Shape7;
      ModelRenderer Shape8;
      ModelRenderer Shape9;
      ModelRenderer Shape10;
      ModelRenderer Shape11;
      ModelRenderer Shape12;
      ModelRenderer Shape13;
      ModelRenderer Shape14;
      ModelRenderer Shape15;
      
      public Abominable()
      {
      textureWidth = 128;
      textureHeight = 64;
      
      Shape1 = new ModelRenderer(this, 59, 0);
      Shape1.addBox(0F, 0F, 0F, 5, 3, 9);
      Shape1.setRotationPoint(1F, 21F, -6F);
      Shape1.setTextureSize(128, 64);
      Shape1.mirror = true;
      setRotation(Shape1, 0F, 0F, 0F);
      Shape2 = new ModelRenderer(this, 59, 0);
      Shape2.addBox(0F, 0F, 0F, 5, 3, 9);
      Shape2.setRotationPoint(-6F, 21F, -6F);
      Shape2.setTextureSize(128, 64);
      Shape2.mirror = true;
      setRotation(Shape2, 0F, 0F, 0F);
      Shape3 = new ModelRenderer(this, 0, 32);
      Shape3.addBox(0F, 0F, 0F, 5, 14, 5);
      Shape3.setRotationPoint(1F, 7F, -2F);
      Shape3.setTextureSize(128, 64);
      Shape3.mirror = true;
      setRotation(Shape3, 0F, 0F, 0F);
      Shape4 = new ModelRenderer(this, 0, 32);
      Shape4.addBox(0F, 0F, 0F, 5, 14, 5);
      Shape4.setRotationPoint(-6F, 7F, -2F);
      Shape4.setTextureSize(128, 64);
      Shape4.mirror = true;
      setRotation(Shape4, 0F, 0F, 0F);
      Shape5 = new ModelRenderer(this, 32, 30);
      Shape5.addBox(0F, 0F, 0F, 10, 15, 7);
      Shape5.setRotationPoint(-5F, -8F, -3F);
      Shape5.setTextureSize(128, 64);
      Shape5.mirror = true;
      setRotation(Shape5, 0F, 0F, 0F);
      Shape6 = new ModelRenderer(this, 34, 0);
      Shape6.addBox(0F, 0F, 0F, 8, 8, 1);
      Shape6.setRotationPoint(-4F, -2F, -4F);
      Shape6.setTextureSize(128, 64);
      Shape6.mirror = true;
      setRotation(Shape6, 0F, 0F, 0F);
      Shape7 = new ModelRenderer(this, 77, 32);
      Shape7.addBox(0F, 0F, 0F, 6, 6, 6);
      Shape7.setRotationPoint(-3F, -14F, -4F);
      Shape7.setTextureSize(128, 64);
      Shape7.mirror = true;
      setRotation(Shape7, 0F, 0F, 0F);
      Shape8 = new ModelRenderer(this, 93, 0);
      Shape8.addBox(0F, 0F, 0F, 5, 1, 5);
      Shape8.setRotationPoint(-9F, -9F, -2F);
      Shape8.setTextureSize(128, 64);
      Shape8.mirror = true;
      setRotation(Shape8, 0F, 0F, 0.0523599F);
      Shape9 = new ModelRenderer(this, 106, 31);
      Shape9.addBox(0F, 0F, 0F, 4, 13, 5);
      Shape9.setRotationPoint(-9F, -8F, -2F);
      Shape9.setTextureSize(128, 64);
      Shape9.mirror = true;
      setRotation(Shape9, 0F, 0F, 0.0523599F);
      Shape10 = new ModelRenderer(this, 106, 31);
      Shape10.addBox(0F, 0F, 0F, 4, 13, 5);
      Shape10.setRotationPoint(5F, -8F, -2F);
      Shape10.setTextureSize(128, 64);
      Shape10.mirror = true;
      setRotation(Shape10, 0F, 0F, -0.0523599F);
      Shape11 = new ModelRenderer(this, 93, 0);
      Shape11.addBox(0F, 0F, 0F, 5, 1, 5);
      Shape11.setRotationPoint(4F, -9F, -2F);
      Shape11.setTextureSize(128, 64);
      Shape11.mirror = true;
      setRotation(Shape11, 0F, 0F, -0.0523599F);
      Shape12 = new ModelRenderer(this, 0, 14);
      Shape12.addBox(0F, 0F, 0F, 4, 1, 2);
      Shape12.setRotationPoint(3F, -13F, -2F);
      Shape12.setTextureSize(128, 64);
      Shape12.mirror = true;
      setRotation(Shape12, 0F, 0F, 0F);
      Shape13 = new ModelRenderer(this, 0, 0);
      Shape13.addBox(0F, 0F, 0F, 2, 2, 2);
      Shape13.setRotationPoint(5F, -15F, -2F);
      Shape13.setTextureSize(128, 64);
      Shape13.mirror = true;
      setRotation(Shape13, 0F, 0F, 0F);
      Shape14 = new ModelRenderer(this, 0, 14);
      Shape14.addBox(0F, 0F, 0F, 4, 1, 2);
      Shape14.setRotationPoint(-7F, -13F, -2F);
      Shape14.setTextureSize(128, 64);
      Shape14.mirror = true;
      setRotation(Shape14, 0F, 0F, 0F);
      Shape15 = new ModelRenderer(this, 0, 0);
      Shape15.addBox(0F, 0F, 0F, 2, 2, 2);
      Shape15.setRotationPoint(-7F, -15F, -2F);
      Shape15.setTextureSize(128, 64);
      Shape15.mirror = true;
      setRotation(Shape15, 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);
      Shape1.render(f5);
      Shape2.render(f5);
      Shape3.render(f5);
      Shape4.render(f5);
      Shape5.render(f5);
      Shape6.render(f5);
      Shape7.render(f5);
      Shape8.render(f5);
      Shape9.render(f5);
      Shape10.render(f5);
      Shape11.render(f5);
      Shape12.render(f5);
      Shape13.render(f5);
      Shape14.render(f5);
      Shape15.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);
      }
      }
      
      

      Ensuite il y a la classe De l’entité : “MobAbominable”

      
      package mes.mod.client;
      
      import net.minecraft.entity.EntityCreature;
      import net.minecraft.entity.SharedMonsterAttributes;
      import net.minecraft.world.World;
      
      public class MobAbominable extends EntityCreature {
      public MobAbominable(World world)
      {
      super(world);
      }
      protected void applyEntityAttributes()
      {
      super.applyEntityAttributes();
      this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setAttribute(70D);
      this.getEntityAttribute(SharedMonsterAttributes.followRange).setAttribute(40.0D);
      this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setAttribute(0.4D);
      this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(15.0D);
      }
      
      }
      
      

      Ensuite la classe “Render” du mob : “RenderAbominable” :

      
      package mes.mod;
      
      import mes.mod.client.Abominable;
      import mes.mod.client.MobAbominable;
      import net.minecraft.client.model.ModelBiped;
      import net.minecraft.client.renderer.entity.RenderBiped;
      import net.minecraft.entity.Entity;
      import net.minecraft.util.ResourceLocation;
      
      public class RenderAbominable extends RenderBiped {
      
      protected static final ResourceLocation texture = new ResourceLocation("abominable.png");
      
      public RenderAbominable(ModelBiped abominable, float par2) {
      super(abominable, par2);
      // TODO Auto-generated constructor stub
      }
      
      protected ResourceLocation getAbominableTextures(MobAbominable abominable)
      {
      return texture;
      }
      
      protected ResourceLocation getEntityTexture(Entity par1Entity)
      {
      return this.getAbominableTextures((MobAbominable)par1Entity);
      }
      
      }
      
      

      Puis le “ClientProxy” :

      
      package mes.mod.client ;
      
      import cpw.mods.fml.client.registry.ClientRegistry;
      import cpw.mods.fml.client.registry.RenderingRegistry;
      import mes.mod.EntityExcalibur;
      import mes.mod.ExcaliburRender;
      import mes.mod.RenderAbominable;
      import mes.mod.common.CommonProxy;
      
      public class ClientProxy extends CommonProxy
      {
      @Override
      public void registerRender()
      {
      RenderingRegistry.registerEntityRenderingHandler(MobAbominable.class, new RenderAbominable(new Abominable(), 0.5F));
      }
      
      }
      
      

      Et enfin les lignes concernant le mob dans ma classe principale :

      
      //Mobs
      proxy.registerRender();
      
      EntityRegistry.registerGlobalEntityID(MobAbominable.class, "Abominable", 355, 24, 30);
      EntityRegistry.registerModEntity(MobAbominable.class, "Abominable", 2030, this, 40, 1, true);
      EntityRegistry.addSpawn(MobAbominable.class, 1, 4, 4, EnumCreatureType.creature);
      LanguageRegistry.instance().addStringLocalization("entity.Abominable.name", "Abominable");
      
      

      Voilà voilà, je n’y arrive vraiment pas 😞
      Merci à l’avance de votre aide 🙂

      1 réponse Dernière réponse Répondre Citer 0
      • Superloup10
        Superloup10 Modérateurs dernière édition par

        Mauvaise section, je déplace.

        Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

        Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

        1 réponse Dernière réponse Répondre Citer 0
        • D
          Destroy_30 dernière édition par

          Ah ouais désolé 😞

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            public class MobAbominable extends EntityCreature {

            this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(15.0D​);

            Le problème est la, les EntityCreature n’attaque pas donc l’attribue attackDamage cause des problèmes.
            Si tu veux faire qu’il attaque, il faut extends EntityMob

            1 réponse Dernière réponse Répondre Citer 0
            • elias54
              elias54 Administrateurs dernière édition par

              @‘robin4002’:

              public class MobAbominable extends EntityCreature {

              this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setAttribute(15.0D​);

              Le problème est la, les EntityCreature n’attaque pas donc l’attribue attackDamage cause des problèmes.
              Si tu veux faire qu’il attaque, il faut extends EntityMob

              Pas forcément l’extends à EntityMob, il peut Register l’Attribute et l’appeler.

              Il te faudra également faire le système d’attaque pour que ton mob puise causer des dégâts.

              Mon site | GitHub

              1 réponse Dernière réponse Répondre Citer 0
              • D
                Destroy_30 dernière édition par

                Tout d’abord : Merci
                Après quelques tests (j’ai laissé le Mob en EntityCreature et retiré son tâche d’attaque et également changé le ModelBiped en ModelBase) mon mob spawn enfin!
                Je voudrais juste comprendre comment faire pour qu’il attaque quand même le joueur/d’autre mob ?(je ne veux pas le changer en EntityMob, je ne veux pas qu’il spawn de nuit, de plus se la provoque une erreur que je ne comprends pas au niveau des 4 lignes dans la classe principale)

                1 réponse Dernière réponse Répondre Citer 0
                • elias54
                  elias54 Administrateurs dernière édition par

                  Si tu voulais faire un simple mob agressif qui spawn le jour, j’ai une solution radicale (olol j’utilise des mots sans en comprendre le terme) :

                  
                  public boolean getCanSpawnHere()
                  {
                  return worldObj.isDayTime;
                  }
                  
                  

                  Et bien sûr, si tu mets ce code, il va falloir changer l’EntityCreature en EntityMob. Sinon, ça n’a aucun intérêt.

                  Car OUI, tu PEUX extends à entity creature et ensuite faire en sorte que ton mob attaque, mais c’est là que ça devient plus complexe. 😉

                  Donc si tu veux plus simple, suis mon exemple ! 🙂

                  Mon site | GitHub

                  1 réponse Dernière réponse Répondre Citer 0
                  • D
                    Destroy_30 dernière édition par

                    Merci, avec le EntityMob sa fonctionne bien! 🙂
                    Et, je voulais juste savoir une chose que je n’ai pas trouvée, comment lui faire attaquer certaines autres entités que le joueur (passive et hostile) ?

                    1 réponse Dernière réponse Répondre Citer 0
                    • elias54
                      elias54 Administrateurs dernière édition par

                      Il y a un tutoriel sur le forum pour ça. 🙂

                      Mon site | GitHub

                      1 réponse Dernière réponse Répondre Citer 0
                      • D
                        Destroy_30 dernière édition par

                        J’ai oublié de préciser que je code en 1.6.2 😞
                        Le tuto est pour la 1.7.2

                        1 réponse Dernière réponse Répondre Citer 0
                        • elias54
                          elias54 Administrateurs dernière édition par

                          Le code reste le même normalement.

                          Mon site | GitHub

                          1 réponse Dernière réponse Répondre Citer 0
                          • 1 / 1
                          • Premier message
                            Dernier message
                          Design by Woryk
                          Contact / Mentions Légales

                          MINECRAFT FORGE FRANCE © 2018

                          Powered by NodeBB