И опять вопрос от меня .

Мда , проблема такова , я создал шапку с моделькой Techne , броню делал по этому туториалу  . Всё вроде бы делал , но у меня вот такая проблема . влево и вправо всё нормально , но верх и вниз шапка не двигается за игроком . Код модели шапки :
Код:
package assets.testmod.src;

import java.util.ArrayList;

import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;

public class Shapka extends ModelBiped
{
  private ArrayList<ModelRenderer> modelList = new ArrayList<ModelRenderer>();
    ModelRenderer Shape1;
    ModelRenderer Shape2;
  
  public Shapka()
  {
    textureWidth = 64;
    textureHeight = 32;
    
      Shape1 = new ModelRenderer(this, 0, 0);
      Shape1.addBox(-4.5F, -9F, -4.5F, 9, 3, 9);
      Shape1.setRotationPoint(0F, 0F, 0F);
      Shape1.setTextureSize(64, 32);
      Shape1.mirror = true;
      setRotation(Shape1, 0F, 0F, 0F);
      Shape2 = new ModelRenderer(this, 0, 0);
      Shape2.addBox(-4F, -9.7F, -4F, 8, 1, 8);
      Shape2.setRotationPoint(0F, 0F, 0F);
      Shape2.setTextureSize(64, 32);
      Shape2.mirror = true;
      setRotation(Shape2, 0F, 0F, 0F);
      modelList.add(Shape1);
      modelList.add(Shape2);
  }
  
  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);
    Shape1.render(f5);
    Shape2.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); 
        //те 2 строки из ModelBiped

        setRotationAngleY(f3 / (180F / (float)Math.PI));
        setRotationAngleX(f4 / (180F / (float)Math.PI));
          
        
        if (isSneak) 
            setRotationAngleY(1.0F);
        else 
            setRotationAngleX(0.0F);
        
    

}
  


private void setRotationAngleX(float angle) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotateAngleX = angle;
        }
    }

private void setRotationAngleY(float angle) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotateAngleY = angle;
        }
    }
private void setRotationAngleZ(float angle) {
    for (ModelRenderer modelRenderer : modelList) {
        modelRenderer.rotateAngleZ = angle;
    }
}

private void setRotationPointY (float par) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotationPointY = par;
        }
      }

}
 И код итема шапки :
Код:
package assets.testmod.src;

import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.texture.IconRegister;
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.EnumArmorMaterial;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class TestHelmet extends ItemArmor
{

    public TestHelmet(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4)
    {
        super(par1, par2EnumArmorMaterial, par3, par4);
        this.setCreativeTab(CreativeTabs.tabCombat);
    }
    
    @SideOnly(Side.CLIENT)
    @Override 
    public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
        if (armorSlot != 0) 
            return null;
       
        if (itemStack != null && itemStack.getItem() instanceof TestHelmet) {
            ModelBiped model = TestMod.proxy.getArmorModelHelmet();
            model.isSneak = entityLiving.isSneaking();
            model.aimedBow = entityLiving.isSneaking();
            return model;
            
    }
        else
            return null;
    }
    

    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        this.itemIcon = par1IconRegister.registerIcon(ModInfo.MODID + ":testHelmet"); 
    }
    
    public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack)
    {
        /*
         * Любой эффект, когда броня одета (не вся, а только определенный предмет(в данном случае - шлем))
         */
    }
    

    public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer)
    {
        return ModInfo.MODID + ":textures/armor/Shapka.png";
    }
    


}




796f4b70e3db06116f2023e35ac7cffc.png
 
А то там такого , там просто обозначаются переменная = положению (на сколько я знаю ) , скорее всего всё в setRotationAngles , но вроде бы я всё зарегистрировал .
 
Допиши под
" modelList.add(Shape1);
modelList.add(Shape2);
"
В моделе это:
" this.bipedHead.addChild(Shape1);
this.bipedHead.addChild(Shape2);
"
 
Кстати да, чайлд - способ получше моего. Надо будет либо обновить тутор, либо выпустить вторую часть, как будет время.
 
Нет не работает вот так же да ?
Код:
package assets.testmod.src;

import java.util.ArrayList;

import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;

public class Shapka extends ModelBiped
{
  private ArrayList<ModelRenderer> modelList = new ArrayList<ModelRenderer>();
    ModelRenderer Shape1;
    ModelRenderer Shape2;
  
  public Shapka()
  {
    textureWidth = 64;
    textureHeight = 32;
    
      Shape1 = new ModelRenderer(this, 0, 0);
      Shape1.addBox(-4.5F, -9F, -4.5F, 9, 3, 9);
      Shape1.setRotationPoint(0F, 0F, 0F);
      Shape1.setTextureSize(64, 32);
      Shape1.mirror = true;
      setRotation(Shape1, 0F, 0F, 0F);
      Shape2 = new ModelRenderer(this, 0, 0);
      Shape2.addBox(-4F, -9.7F, -4F, 8, 1, 8);
      Shape2.setRotationPoint(0F, 0F, 0F);
      Shape2.setTextureSize(64, 32);
      Shape2.mirror = true;
      setRotation(Shape2, 0F, 0F, 0F);
      modelList.add(Shape1);
      modelList.add(Shape2);
      this.bipedHead.addChild(Shape1);
      this.bipedHead.addChild(Shape2);

  }
  
  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);
    Shape1.render(f5);
    Shape2.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); 
        //те 2 строки из ModelBiped

        setRotationAngleY(f3 / (180F / (float)Math.PI));
        setRotationAngleX(f4 / (180F / (float)Math.PI));
          
        
        if (isSneak) 
            setRotationAngleY(1.0F);
        else 
            setRotationAngleX(0.0F);
        
    

}
  


private void setRotationAngleX(float angle) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotateAngleX = angle;
        }
    }

private void setRotationAngleY(float angle) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotateAngleY = angle;
        }
    }
private void setRotationAngleZ(float angle) {
    for (ModelRenderer modelRenderer : modelList) {
        modelRenderer.rotateAngleZ = angle;
    }
}



}
[merge_posts_bbcode]Добавлено: 26.11.2014 15:39:51[/merge_posts_bbcode]

Я удалял 

Код:
        setRotationAngleY(f3 / (180F / (float)Math.PI));
        setRotationAngleX(f4 / (180F / (float)Math.PI));

 но тогда и в право и в лево она следовала но не в точь в точь . а с зодержкой
 
Если шлем делаешь то учти, что нельзя делать броню с таким же маппингом (привязкой шейпов к текстуре) как и у стандартной. Т.е. грубо говоря, смести вниз текстуру.
Вот мой код шапки

Код:
public class ModelHatPlague extends ModelBiped
{
    //fields
    ModelRenderer Head;
    ModelRenderer Face;
    ModelRenderer Nose1;
    ModelRenderer Nose0;
    ModelRenderer Nose2;
    ModelRenderer Nose3;
    ModelRenderer Hat1;
    ModelRenderer Hat2;
    ModelRenderer Eye1;
    ModelRenderer Eye2;

    public ModelHatPlague()
      {
        textureWidth = 128;
        textureHeight = 64;
        
        Head = new ModelRenderer(this, 0, 0);
          Head.addBox(-4F, -8F, -4F, 8, 8, 8);
          Head.setRotationPoint(0F, 0F, 0F);
          Head.setTextureSize(128, 64);
          Head.mirror = true;
          setRotation(Head, 0F, 0F, 0F);
          Face = new ModelRenderer(this, 0, 24);
          Face.addBox(-4F, -8F, -4F, 6, 6, 6);
          Face.setRotationPoint(1F, 1F, -1F);
          Face.setTextureSize(128, 64);
          Face.mirror = true;
          setRotation(Face, 0F, 0F, 0F);
          Nose1 = new ModelRenderer(this, 0, 17);
          Nose1.addBox(-4F, -7F, -4F, 4, 3, 3);
          Nose1.setRotationPoint(2F, 2F, -4F);
          Nose1.setTextureSize(128, 64);
          Nose1.mirror = true;
          setRotation(Nose1, 0F, 0F, 0F);
          Hat1 = new ModelRenderer(this, 0, 50);
          Hat1.addBox(-4F, -8F, -4F, 12, 2, 12);
          Hat1.setRotationPoint(-2F, -1F, -2F);
          Hat1.setTextureSize(128, 64);
          Hat1.mirror = true;
          setRotation(Hat1, 0F, 0F, 0F);
          Hat2 = new ModelRenderer(this, 34, 0);
          Hat2.addBox(-4F, -8F, -4F, 7, 1, 7);
          Hat2.setRotationPoint(0.5F, -2F, 0.5F);
          Hat2.setTextureSize(128, 64);
          Hat2.mirror = true;
          setRotation(Hat2, 0F, 0F, 0F);
          Eye1 = new ModelRenderer(this, 16, 17);
          Eye1.addBox(0F, 0F, 0F, 1, 1, 1);
          Eye1.setRotationPoint(1F, -6.5F, -5.2F);
          Eye1.setTextureSize(128, 64);
          Eye1.mirror = true;
          setRotation(Eye1, 0F, 0F, 0F);
          Eye2 = new ModelRenderer(this, 16, 20);
          Eye2.addBox(0F, 0F, 0F, 1, 1, 1);
          Eye2.setRotationPoint(-2F, -6.5F, -5.2F);
          Eye2.setTextureSize(128, 64);
          Eye2.mirror = true;
          setRotation(Eye2, 0F, 0F, 0F);
          Nose0 = new ModelRenderer(this, 0, 17);
          Nose0.addBox(-4F, -7F, -4F, 2, 3, 3);
          Nose0.setRotationPoint(3F, 2F, -7F);
          Nose0.setTextureSize(128, 64);
          Nose0.mirror = true;
          setRotation(Nose1, 0F, 0F, 0F);
          Nose2 = new ModelRenderer(this, 0, 38);
          Nose2.addBox(-0.5F, -1F, 0F, 1, 3, 6);
          Nose2.setRotationPoint(0F, -4F, -13F);
          Nose2.setTextureSize(128, 64);
          Nose2.mirror = true;
          setRotation(Nose2, 0F, 0.260246F, 0F);
          Nose3 = new ModelRenderer(this, 0, 38);
          Nose3.addBox(-0.5F, -1F, 0F, 1, 3, 6);
          Nose3.setRotationPoint(0F, -4F, -13F);
          Nose3.setTextureSize(128, 64);
          Nose3.mirror = true;
          setRotation(Nose3, 0F, -0.2602503F, 0F);
          setRotation(Eye2, 0F, 0F, 0F);
        
          this.bipedHead.addChild(Head);
          this.bipedHead.addChild(Face);
          this.bipedHead.addChild(Nose0);
          this.bipedHead.addChild(Nose1);
          this.bipedHead.addChild(Nose2);
          this.bipedHead.addChild(Nose3);
          this.bipedHead.addChild(Hat1);
          this.bipedHead.addChild(Hat2);
          this.bipedHead.addChild(Eye1);
          this.bipedHead.addChild(Eye2);
    }

    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, boolean isFirstPirson)
    {
        super.render(entity, f, f1, f2, f3, f4, f5);
        setRotationAngles(f, f1, f2, f3, f4, f5, entity);
        Head.render(f5);
        Face.render(f5);
        Nose0.render(f5);
        Nose1.render(f5);
        Nose2.render(f5);
        Nose3.render(f5);
        Hat1.render(f5);
        Hat2.render(f5);
        Eye1.render(f5);
        Eye2.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 ent)
    {
        super.setRotationAngles(f, f1, f2, f3, f4, f5, ent);
    }

}
 
Oldestkon написал(а):
Кстати да, чайлд - способ получше моего. Надо будет либо обновить тутор, либо выпустить вторую часть, как будет время.
Обязательно выпусти ведь много вопросов по-поводу этих двух способов постоянно
 
Назад
Сверху