MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Armure 3D

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    13 Messages 3 Publieurs 3.0k Vues 1 Watching
    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.
    • K Hors-ligne
      Kerlann
      dernière édition par

      Bonjour

      je ne sais pas comment faire pour que l’armure s’adapte au animation (sneak, courir, tir a l’arc …)

      Code:

      package fr.kerlann.norialife;
      
      import cpw.mods.fml.relauncher.Side;
      import cpw.mods.fml.relauncher.SideOnly;
      import fr.kerlann.model.ArmorAlien;
      import fr.kerlann.proxy.ClientProxy;
      import net.minecraft.client.model.ModelBiped;
      import net.minecraft.client.renderer.texture.IIconRegister;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.EnumAction;
      import net.minecraft.item.ItemArmor;
      import net.minecraft.item.ItemStack;
      
      public class Alien extends ItemArmor {
      
      public ArmorAlien model;
      
      public Alien(ArmorMaterial material, int render_idx, int type) {
      super(material, render_idx, type);
      
      this.setMaxStackSize(1);
      this.setCreativeTab(noria.Noriaalienarmur);
      
      }
      
      @Override
      public String getUnlocalizedName() {
      return String.format("item.%s%s", Resource.RESOURCE_PREFIX,
      getUnwrappedUnlocalizedName(super.getUnlocalizedName()));
      }
      
      @Override
      public String getUnlocalizedName(ItemStack itemstack) {
      return String.format("item.%s%s", Resource.RESOURCE_PREFIX,
      getUnwrappedUnlocalizedName(super.getUnlocalizedName()));
      }
      
      protected String getUnwrappedUnlocalizedName(String unlocalizedName) {
      return unlocalizedName.substring(unlocalizedName.indexOf('.') + 1);
      }
      
      @Override
      @SideOnly(Side.CLIENT)
      public void registerIcons(IIconRegister iconRegister) {
      this.itemIcon = iconRegister
      .registerIcon(this.getUnlocalizedName().substring(this.getUnlocalizedName().indexOf('.') + 1));
      }
      
         @Override
         @SideOnly(Side.CLIENT)
         public ModelBiped getArmorModel(EntityLivingBase entityliving, ItemStack stack, int armor)
         {
             return new ArmorAlien(0.25F);
         }
      
      @Override
      public String getArmorTexture(ItemStack stack, Entity entity, int slot, String layer) {
      
      return "noria:textures/models/armor/alien_layer_1.png";
      }
      
      @SideOnly(Side.CLIENT)
      public void initModel() {
      if (model == null) {
      model = new ArmorAlien(0.25F);
      }
      }
      
      }
      

      Code clientProxy

      package fr.kerlann.proxy;
      
      import java.util.HashMap;
      import java.util.Map;
      
      import cpw.mods.fml.common.FMLCommonHandler;
      import fr.kerlann.model.ArmorAlien;
      import fr.kerlann.norialife.Alien;
      import fr.kerlann.norialife.noria;
      import net.minecraft.client.model.ModelBiped;
      import net.minecraft.item.Item;
      
      public class ClientProxy
      extends CommonProxy {
      
      public static final Map <item, modelbiped="">armorModels = new HashMap<item, modelbiped="">();
      
      public static void register_renderers(){
      
      ArmorAlien custom_armor = new ArmorAlien(5F);
      ArmorAlien custom_legs = new ArmorAlien(0.5F);
      
      armorModels.put(noria.AlienHelm, custom_armor);
      armorModels.put(noria.Alienchest, custom_armor);
      armorModels.put(noria.Alienlegs, custom_legs);
      armorModels.put(noria.Alienboot, custom_armor);
      
      }
      
      }
      
      

      Code Rendu armor

      package fr.kerlann.model;
      
      import net.minecraft.client.model.ModelBiped;
      import net.minecraft.client.model.ModelRenderer;
      import net.minecraft.entity.Entity;
      
      public class ArmorAlien extends ModelBiped {
      ModelRenderer head;
      ModelRenderer body;
      ModelRenderer rightarm;
      ModelRenderer leftarm;
      ModelRenderer rightleg;
      ModelRenderer leftleg;
      ModelRenderer Shape1;
      ModelRenderer Shape2;
      ModelRenderer Shape3;
      ModelRenderer Shape4;
      ModelRenderer Shape5;
      ModelRenderer Shape6;
      ModelRenderer Shape7;
      ModelRenderer Shape9;
      ModelRenderer Shape10;
      ModelRenderer Shape11;
      ModelRenderer shape12;
      ModelRenderer Shape13;
      
      public ArmorAlien(float expand) {
      super(expand, 0, 64, 32);
      
      head = new ModelRenderer(this, 0, 0);
      head.addBox(-4F, -8F, -5F, 8, 8, 15);
      head.setRotationPoint(0F, 0F, 0F);
      head.setTextureSize(64, 32);
      head.mirror = true;
      setRotation(head, 0F, 0F, 0F);
      body = new ModelRenderer(this, 16, 16);
      body.addBox(-4F, 0F, -2F, 8, 12, 4);
      body.setRotationPoint(0F, 0F, 0F);
      body.setTextureSize(64, 32);
      body.mirror = true;
      setRotation(body, 0F, 0F, 0F);
      rightarm = new ModelRenderer(this, 40, 16);
      rightarm.addBox(-3F, -2F, -2F, 4, 12, 4);
      rightarm.setRotationPoint(-5F, 2F, 0F);
      rightarm.setTextureSize(64, 32);
      rightarm.mirror = true;
      setRotation(rightarm, 0F, 0F, 0F);
      leftarm = new ModelRenderer(this, 40, 16);
      leftarm.addBox(-1F, -2F, -2F, 4, 12, 4);
      leftarm.setRotationPoint(5F, 2F, 0F);
      leftarm.setTextureSize(64, 32);
      leftarm.mirror = true;
      setRotation(leftarm, 0F, 0F, 0F);
      rightleg = new ModelRenderer(this, 0, 16);
      rightleg.addBox(-2F, 0F, -2F, 4, 12, 4);
      rightleg.setRotationPoint(-2F, 12F, 0F);
      rightleg.setTextureSize(64, 32);
      rightleg.mirror = true;
      setRotation(rightleg, 0F, 0F, 0F);
      leftleg = new ModelRenderer(this, 0, 16);
      leftleg.addBox(-2F, 0F, -2F, 4, 12, 4);
      leftleg.setRotationPoint(2F, 12F, 0F);
      leftleg.setTextureSize(64, 32);
      leftleg.mirror = true;
      setRotation(leftleg, 0F, 0F, 0F);
      Shape1 = new ModelRenderer(this, 56, 22);
      Shape1.addBox(0F, 0F, 0F, 2, 8, 2);
      Shape1.setRotationPoint(-1F, 12.73333F, 0.5F);
      Shape1.setTextureSize(64, 32);
      Shape1.mirror = true;
      setRotation(Shape1, 0.7063936F, 0F, 0F);
      Shape2 = new ModelRenderer(this, 56, 17);
      Shape2.addBox(0F, 0F, 0F, 2, 4, 2);
      Shape2.setRotationPoint(-1F, 18.9F, 5.6F);
      Shape2.setTextureSize(64, 32);
      Shape2.mirror = true;
      setRotation(Shape2, 1.152537F, 0F, 0F);
      Shape3 = new ModelRenderer(this, 56, 18);
      Shape3.addBox(-1F, 0F, 0F, 2, 4, 2);
      Shape3.setRotationPoint(0F, 20.6F, 9.2F);
      Shape3.setTextureSize(64, 32);
      Shape3.mirror = true;
      setRotation(Shape3, 1.784573F, 0F, 0F);
      Shape4 = new ModelRenderer(this, 32, 0);
      Shape4.addBox(0F, 0F, 0F, 2, 4, 2);
      Shape4.setRotationPoint(-1F, 19.8F, 13F);
      Shape4.setTextureSize(64, 32);
      Shape4.mirror = true;
      setRotation(Shape4, 2.193538F, 0F, 0F);
      Shape5 = new ModelRenderer(this, 32, 0);
      Shape5.addBox(0F, 0F, 0F, 2, 2, 2);
      Shape5.setRotationPoint(-1F, 17.9F, 15.3F);
      Shape5.setTextureSize(64, 32);
      Shape5.mirror = true;
      setRotation(Shape5, 1.635859F, 0F, 0F);
      Shape6 = new ModelRenderer(this, 32, 0);
      Shape6.addBox(0F, 0F, 0F, 2, 4, 2);
      Shape6.setRotationPoint(4F, 24F, 9F);
      Shape6.setTextureSize(64, 32);
      Shape6.mirror = true;
      setRotation(Shape6, 1.93685F, 0F, 0F);
      Shape7 = new ModelRenderer(this, 32, 0);
      Shape7.addBox(0F, 0F, 0F, 2, 3, 2);
      Shape7.setRotationPoint(4F, 22.7F, 12.7F);
      Shape7.setTextureSize(64, 32);
      Shape7.mirror = true;
      setRotation(Shape7, 2.007081F, 0F, -0.0954183F);
      Shape9 = new ModelRenderer(this, 32, 0);
      Shape9.addBox(0F, 0F, 0F, 2, 2, 2);
      Shape9.setRotationPoint(4F, 21.6F, 15F);
      Shape9.setTextureSize(64, 32);
      Shape9.mirror = true;
      setRotation(Shape9, 2.007081F, 0F, -0.170666F);
      Shape10 = new ModelRenderer(this, 32, 0);
      Shape10.addBox(0F, -1.5F, 0F, 2, 2, 2);
      Shape10.setRotationPoint(0F, 18.1F, 18.2F);
      Shape10.setTextureSize(64, 32);
      Shape10.mirror = true;
      setRotation(Shape10, 1.495549F, 0.633335F, -0.1330422F);
      Shape11 = new ModelRenderer(this, 32, 0);
      Shape11.addBox(-1F, 0.1F, 0F, 2, 3, 2);
      Shape11.setRotationPoint(0.2F, 18F, 17.73333F);
      Shape11.setTextureSize(64, 32);
      Shape11.mirror = true;
      setRotation(Shape11, 1.42907F, 1.412035F, 0.0709785F);
      shape12 = new ModelRenderer(this, 32, 0);
      shape12.addBox(0F, 1F, 0F, 2, 2, 2);
      shape12.setRotationPoint(3.6F, 17.7F, 20.06667F);
      shape12.setTextureSize(64, 32);
      shape12.mirror = true;
      setRotation(shape12, 0.8898555F, 2.705022F, 0.0237365F);
      Shape13 = new ModelRenderer(this, 32, 0);
      Shape13.addBox(0F, 0F, 0F, 2, 2, 2);
      Shape13.setRotationPoint(5F, 19.4F, 18F);
      Shape13.setTextureSize(64, 32);
      Shape13.mirror = true;
      setRotation(Shape13, 0.8621664F, 2.859084F, 0.1654625F);
      
      }
      
      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);
      head.render(f5);
      body.render(f5);
      rightarm.render(f5);
      leftarm.render(f5);
      rightleg.render(f5);
      leftleg.render(f5);
      Shape1.render(f5);
      Shape2.render(f5);
      Shape3.render(f5);
      Shape4.render(f5);
      Shape5.render(f5);
      Shape6.render(f5);
      Shape7.render(f5);
      Shape9.render(f5);
      Shape10.render(f5);
      Shape11.render(f5);
      shape12.render(f5);
      Shape13.render(f5);
      }
      
      private void setRotation(ModelRenderer model, float x, float y, float z) {
      model.rotateAngleX = x;
      model.rotateAngleY = y;
      model.rotateAngleZ = z;
      }
      
      }
      
      

      si quel qu’un pourrait m’aider 
      Merci d’avance ! :)</item,></item,>

      1 réponse Dernière réponse Répondre Citer 0
      • LeBossMax2L Hors-ligne
        LeBossMax2
        dernière édition par

        Salut,
        Alors je vois deux problèmes :

        • Dans la fonction getArmorModel de ton item, il faut paramétrer le modèle avec des variables comme sneak et d’autres, je ne sais plus exactement.
        • Dans la classe de ton modèle, il faut overide la fonction setRogationAngles en mettant toutes les rotations des parties de model comme body, head … à la valeur des rotations de bipedBody, bipedHead …
        1 réponse Dernière réponse Répondre Citer 0
        • K Hors-ligne
          Kerlann
          dernière édition par

          ok merci j’ai fait sa et sa marche

          @Override
          @SideOnly(Side.CLIENT)
          public ModelBiped getArmorModel(EntityLivingBase entityliving, ItemStack stack, int armor) {
          
          ModelBiped armorModel = new ArmorAlien(1f);
          
          armorModel.isSneak = entityliving.isSneaking();
          armorModel.isRiding = entityliving.isRiding();
          armorModel.isChild = entityliving.isChild();
          
          armorModel.heldItemRight = 0;
          armorModel.aimedBow = false;
          
          EntityPlayer player = (EntityPlayer)entityliving;
          
          ItemStack held_item = player.getEquipmentInSlot(0);
          
          if (held_item != null){
          armorModel.heldItemRight = 1;
          
          if (player.getItemInUseCount() > 0){
          
          EnumAction enumaction = held_item.getItemUseAction();
          
          if (enumaction == EnumAction.bow){
          armorModel.aimedBow = true;
          }else if (enumaction == EnumAction.block){
          armorModel.heldItemRight = 3;
          }
          
          }
          
          }
          
          return armorModel;
          }
          

          et je voudrait agrandir la tête du joueur mais comment je pourrait le faire ?

          1 réponse Dernière réponse Répondre Citer 0
          • LeBossMax2L Hors-ligne
            LeBossMax2
            dernière édition par

            Quand tu dis “la tête du joueur”, tu veux dire réellement la tête de joueur ou la partie d’armure qui est sur la tête du joueur ?
            Dans le premier cas, je ne sais pas comment faire et dans le deuxième cas, en jouant avec les GL11.gl_scalef (ou quelque chose comme ça), ça doit être facile.

            1 réponse Dernière réponse Répondre Citer 0
            • K Hors-ligne
              Kerlann
              dernière édition par

              la tête réelle

              Mais sinon je vais essayer avec GL11.gl_scalef

              1 réponse Dernière réponse Répondre Citer 0
              • LeBossMax2L Hors-ligne
                LeBossMax2
                dernière édition par

                @‘Kerlann’:

                la tête réelle

                Mais sinon je vais essayer avec GL11.gl_scalef

                Je pense avoir trouvé une solution : que le joueur met l’armure, tu prend le modèle et modifier la taille de la tête comme ça :

                ModelRenderer bipedHead = event.renderer.getMainModel().bipedHead;
                bipedHead.cubeList.remove(0);
                bipedHead.add(-4.0F, -8.0F, -4.0F, 8, 8, 8, modelSize); // Ici, tu remplace modelSize par la taille que tu veux
                

                Le problème va être quand tu veux remettre la taille normal, quand le joueur enlève l’armure, mais je pense que ça ne doit pas être compliqué à faire.

                1 réponse Dernière réponse Répondre Citer 0
                • AymericRedA Hors-ligne
                  AymericRed
                  dernière édition par

                  Il doit effectivement y avoir moyen de faire ça via l’event de rendu du joueur.

                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                  1 réponse Dernière réponse Répondre Citer 0
                  • K Hors-ligne
                    Kerlann
                    dernière édition par

                    J’ai fait ça mais il y a rien qui change

                       public void onRender(RenderPlayerEvent.Post event)
                       {
                        ModelRenderer bipedHead = event.renderer.modelArmor.bipedHead;
                        bipedHead.cubeList.remove(0);
                        bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 15);
                    
                       }
                    
                    1 réponse Dernière réponse Répondre Citer 0
                    • AymericRedA Hors-ligne
                      AymericRed
                      dernière édition par

                      Tu as mis ceci avec un @SubscribeEvent au dessus, dans une classe enregistrée ?
                      Changes le “Post” par “Pre”.

                      PS: utilises une balise java la prochaine fois 😉

                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                      1 réponse Dernière réponse Répondre Citer 0
                      • K Hors-ligne
                        Kerlann
                        dernière édition par

                        Toujours pas

                        @SubscribeEvent
                        public void onRender(RenderPlayerEvent.Pre event) {
                        ModelRenderer bipedHead = event.renderer.modelArmor.bipedHead;
                        bipedHead.cubeList.remove(0);
                        bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 15);
                        }
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • AymericRedA Hors-ligne
                          AymericRed
                          dernière édition par

                          Mets un “System.out.println(“Quelque chose”);” dans cette fonction, et regardes si ça apparaît dans la console.

                          Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                          AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                          Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                          Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                          1 réponse Dernière réponse Répondre Citer 0
                          • K Hors-ligne
                            Kerlann
                            dernière édition par

                            non ça apparaît pas

                            1 réponse Dernière réponse Répondre Citer 0
                            • AymericRedA Hors-ligne
                              AymericRed
                              dernière édition par

                              Alors la fonction est pas appelée, montres comment tu as enregistrée la classe d’events où est la fonction.

                              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                              MINECRAFT FORGE FRANCE © 2024

                              Powered by NodeBB