Problème rendu armure



  • Bonjour, bonsoir.

    J'ai ajouter un plastron modélisé dans mon mod le rendu simple quand je ne tiens rien dans la main et que je n'effectue aucune action est bien implémenté. Mais en ce qui concerne les actions pour se protéger, pour utiliser l'arc, pour sneak et pour les autre actions sa ne marche pas. j'ai regardé la class du model biped mais je ne sais pas quoi mettre dans la class de mon item de mon render et de mon model.

    Voici mes codes :

    Le model :

    package tarael;
    
    import org.lwjgl.opengl.GL11;
    
    import net.minecraft.client.model.ModelBiped;
    import net.minecraft.client.model.ModelRenderer;
    import net.minecraft.entity.Entity;
    import net.minecraft.util.MathHelper;
    
    public class PlastronDebut extends ModelBiped
    {
     //fields
       ModelRenderer Shape1;
       ModelRenderer Shape2;
       ModelRenderer Shape3;
       ModelRenderer Shape4;
       ModelRenderer Shape5;
       ModelRenderer Shape6;
       ModelRenderer Shape7;
    
     public PlastronDebut(float f)
     {
     super(f, 0, 64, 64);
       textureWidth = 64;
       textureHeight = 64;
    
         Shape1 = new ModelRenderer(this, 0, 34);
         Shape1.addBox(-4F, -4F, -3F, 6, 5, 6);
         Shape1.setRotationPoint(0F, 0F, 0F);
         Shape1.setTextureSize(64, 64);
         Shape1.mirror = true;
         setRotation(Shape1, 0F, 0F, -0.6283185F);
         Shape2 = new ModelRenderer(this, 0, 40);
         Shape2.addBox(-4F, -2F, -3F, 6, 6, 6);
         Shape2.setRotationPoint(0F, 0F, 0F);
         Shape2.setTextureSize(64, 64);
         Shape2.mirror = true;
         setRotation(Shape2, 0F, 0F, 0F);
         Shape3 = new ModelRenderer(this, 0, 34);
         Shape3.addBox(-2F, -4F, -3F, 6, 5, 6);
         Shape3.setRotationPoint(0F, 0F, 0F);
         Shape3.setTextureSize(64, 64);
         Shape3.mirror = true;
         setRotation(Shape3, 0F, 0F, 0.6457718F);
         Shape4 = new ModelRenderer(this, 0, 40);
         Shape4.addBox(-2F, -2F, -3F, 6, 6, 6);
         Shape4.setRotationPoint(0F, 0F, 0F);
         Shape4.setTextureSize(64, 64);
         Shape4.mirror = true;
         setRotation(Shape4, 0F, 0F, 0F);
         Shape5 = new ModelRenderer(this, 28, 34);
         Shape5.addBox(-4.5F, 0F, -2.5F, 9, 12, 5);
         Shape5.setRotationPoint(0F, 0F, 0F);
         Shape5.setTextureSize(64, 64);
         Shape5.mirror = true;
         setRotation(Shape5, 0F, 0F, 0F);
         Shape6 = new ModelRenderer(this, 29, 34);
         Shape6.addBox(-4F, 0F, -2.9F, 8, 4, 1);
         Shape6.setRotationPoint(0F, 0F, 0F);
         Shape6.setTextureSize(64, 64);
         Shape6.mirror = true;
         setRotation(Shape6, 0F, 0F, 0F);
         Shape7 = new ModelRenderer(this, 29, 34);
         Shape7.addBox(-3F, 4F, -2.7F, 6, 7, 1);
         Shape7.setRotationPoint(0F, 0F, 0F);
         Shape7.setTextureSize(64, 64);
         Shape7.mirror = true;
         setRotation(Shape7, 0F, 0F, 0F);
    
         this.bipedRightArm.addChild(Shape1);
         this.bipedRightArm.addChild(Shape2);
         this.bipedLeftArm.addChild(Shape3);
         this.bipedLeftArm.addChild(Shape4);
         this.bipedBody.addChild(Shape5);
         this.bipedBody.addChild(Shape6);
         this.bipedBody.addChild(Shape7);
    
     }
    
     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);
     }
    
     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);
     }
    
    }
    
    

    Le render:

    package tarael;
    
    import net.minecraft.client.Minecraft;
    import net.minecraft.entity.Entity;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.client.IItemRenderer;
    import net.minecraftforge.client.IItemRenderer.ItemRenderType;
    import net.minecraftforge.client.IItemRenderer.ItemRendererHelper;
    
    import org.lwjgl.opengl.GL11;
    
    public class RenderPlastronDebut implements IItemRenderer
    {
    
    protected PlastronDebut model;
    protected static final ResourceLocation texture = new ResourceLocation(ModTarael.MODID + ":textures/models/armor/PlastronDebut.png");
    
    public RenderPlastronDebut ()
    {
    model = new PlastronDebut(0);
    }
    
    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type)
    {
    switch(type)
    {
    case EQUIPPED:
    return true;
    default:
    return false;
    }
    }
    
    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
    ItemRendererHelper helper) {
    // TODO Auto-generated method stub
    return false;
    }
    
    @Override
    public void renderItem(ItemRenderType type, ItemStack item, Object… data)
    {
    switch(type)
    {
    case EQUIPPED:
    GL11.glPushMatrix();
    Minecraft.getMinecraft().renderEngine.bindTexture(texture);
      model.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
    GL11.glPopMatrix();
    break;
    
    default:
    break;
    }
    
    }
    
    }
    
    

    L'item Plastron:

    package tarael;
    
    import net.minecraft.client.model.ModelBiped;
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityLiving;
    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;
    import net.minecraft.world.World;
    import tarael.proxy.ClientProxy;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    public class ItemPlastronDebutArmor extends ItemArmor
    {
    
    public ItemPlastronDebutArmor(ArmorMaterial material, int renderIndex, int armorType)
    {
    super(material, renderIndex, armorType);
    }
    
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
    {
    if(stack.getItem() == ModTarael.plastronDebut)
    {
    return ModTarael.MODID + ":textures/models/armor/PlastronDebut.png";
    }
    return ModTarael.MODID + ":textures/models/armor/empty_chest.png";
    }
    
    @Override
    @SideOnly(Side.CLIENT)
    public ModelBiped getArmorModel(EntityLivingBase entityliving, ItemStack stack, int armor)
    {
    return new PlastronDebut(0);
    }
    
    }
    

    Désolé si c'est une erreur assez bête mais je débute sur les modèles des armures.


  • Administrateurs

    Au niveau de la fonction getArmorModel fait un instance de ton modèle comme ceci :

    PlastronDebut plastron = new PlastronDebut(0);
    Ensuite en fonction de entityliving, effectue les différentes rotations du modèle avec :
    plastron.Shape2.rotateAngleY = valeur;
    puis à la fin du mets return  plastron;
    Pour les différentes rotations tu peux simplement reprendre le même code que dans RenderBiped il me semble.



  • @'robin4002':

    Au niveau de la fonction getArmorModel fait un instance de ton modèle comme ceci :

    PlastronDebut plastron = new PlastronDebut(0);
    Ensuite en fonction de entityliving, effectue les différentes rotations du modèle avec :
    plastron.Shape2.rotateAngleY = valeur;
    puis à la fin du mets return  plastron;
    Pour les différentes rotations tu peux simplement reprendre le même code que dans RenderBiped il me semble.

    Et je fais tout dans le getArmorModel ?


  • Administrateurs

    Oui, il n'y a pas d'autre solution.
    Il y a un post similaire ici : http://minecraftforgefrance.fr/showthread.php?tid=1868