[1.7.10] Рендер модели брони

1,239
2
24
Всем привет.Создал шлем с моделью.Все ок кроме одного - модель шлема не поворачивается если я поверну голову.Пробовал вот это:
Код:
 private void setRotationPointY (float par) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotationPointY = par;
        }
      }
  
  private void setRotationAngleX(float angle) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotateAngleX = angle;
        }
    }

    private void setRotationAngleY(float angle) {
        for (ModelRenderer modelRenderer : modelList) {
            modelRenderer.rotateAngleY = angle;
        }
    }
    
    
  
  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); 
    
    setRotationAngleY(f3 / (180F / (float)Math.PI));
    setRotationAngleX(f4 / (180F / (float)Math.PI));
    
    if (isSneak) 
        setRotationPointY(1.0F);
    else 
        setRotationPointY(0.0F);
  }
если добавить- нет текстуры у брони и неимоверно лагает если смотреть от 2-го лица или в инвертаре
 
1 лицо это когда ты видишь так, будто ты сам участник события.(как в жизе)
2 лицо это будто камера летает за тобой и ты можешь осмотреть себя
3 лицо это когда вид с верху
 
Dragon2488 написал(а):
У тебя комп просто фигня.
У меня комп нормальный, с GregTech и другими модами на бронь с моделькой лагов нет.
Нет текстуры,модель не отображается и еще лагает.Ты это все винишь на мой комп?А еще мне говоришь что бы я не лез со своими тупыми советами
 
XuPuPG написал(а):
1 лицо это когда ты видишь так, будто ты сам участник события.(как в жизе)
2 лицо это будто камера летает за тобой и ты можешь осмотреть себя
3 лицо это когда вид с верху
Вид от третьего лица - это то, что ты назвал "2 лицо".
Вид сверху - это вид сверху.
 
Предмет
Код:
package armorModel;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
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.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.xupupg.testB.proxy.ClientProxy;

public class Helmet extends ItemArmor {

      
     public Helmet(int id, int armorType) {
            super(ArmorMaterial.DIAMOND, id, armorType);
            this.setCreativeTab(CreativeTabs.tabCombat);                                      
            this.setMaxStackSize(1);
            this.setTextureName("ddd");
        }
    
     
    
   
    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister par1IconRegister)
    {
        this.itemIcon = par1IconRegister.registerIcon("tm:textures/items/PicJ.png"); 
    }
    
    /*
      Текстура брони на игроке
     */
    public String getArmorTexture(ItemStack itemstack, Entity entity, int slot, String type)
    {
        return "tm:textures/model/model2.png";
    }
    
    
    @SideOnly(Side.CLIENT)
    @Override 
    public ModelHelmet getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
        if (armorSlot != 0)
            return null;
       
        if (itemStack != null && itemStack.getItem() instanceof Helmet) {
            ModelHelmet model = ClientProxy.getArmorModel();
            model.isSneak = entityLiving.isSneaking();
            return model;
        }
        else
            return null;
    }
    
    
    public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack)
    {
        /*
         *  эффект
         */
    }
    
 
}

Моделька
Код:
package armorModel;

import java.util.ArrayList;

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.entity.player.EntityPlayer;

public class ModelHelmet extends ModelBiped
{
  //fields
    ModelRenderer head1;
    ModelRenderer head2;
    ModelRenderer head3;
    ModelRenderer head4;
    ModelRenderer head5;
    ModelRenderer head6;
    ModelRenderer head7;
    ModelRenderer head8;
    ModelRenderer head9;
    ModelRenderer head10;
    ModelRenderer head11;
    
    private ArrayList<ModelRenderer> modelList = new ArrayList<ModelRenderer>();
    {
        modelList.add(head1);
        modelList.add(head2);
        modelList.add(head3);
        modelList.add(head4);
        modelList.add(head5);
        modelList.add(head6);
        modelList.add(head7);
        modelList.add(head8);
        modelList.add(head9);
        modelList.add(head10);
        modelList.add(head11);
        
    }
    
   
    
    
  public ModelHelmet()
  {
    super.textureWidth = 256;
    super.textureHeight = 64;
    
    this.head1 = new ModelRenderer(this, 34, 22);
    this.head1.addBox(-5F, -8.5F, -5F, 10, 7, 10);
    this.head1.setRotationPoint(0F, 0F, 0F);
    this.head1.setTextureSize(256, 64);
    this.head1.mirror = true;
    this.setRotation(head1, 0F, 0F, 0F);
    this.head2 = new ModelRenderer(this, 74, 12);
    this.head2.addBox(-4.5F, -9.5F, -4.5F, 9, 2, 9);
    this.head2.setRotationPoint(0F, 0F, 0F);
    this.head2.setTextureSize(256, 64);
    this.head2.mirror = true;
    this.setRotation(head2, 0F, 0F, 0F);
    this.head3 = new ModelRenderer(this, 112, 9);
    this.head3.addBox(3.7F, -5.7F, 5.1F, 1, 2, 7);
    this.head3.setRotationPoint(0F, 0F, 0F);
    this.head3.setTextureSize(256, 64);
    this.head3.mirror = true;
    this.setRotation(head3, 0.9098432F, 0.2117115F, 0.1418984F);
    this.head4 = new ModelRenderer(this, 122, 32);
    this.head4.addBox(-1F, -14F, -5.5F, 2, 13, 1);
    this.head4.setRotationPoint(0F, 0F, 0F);
    this.head4.setTextureSize(256, 64);
    this.head4.mirror = true;
    this.setRotation(head4, 0F, 0F, 0F);
    this.head5 = new ModelRenderer(this, 102, 5);
    this.head5.addBox(3F, -5.2F, 7F, 1, 1, 4);
    this.head5.setRotationPoint(0F, 0F, 0F);
    this.head5.setTextureSize(256, 64);
    this.head5.mirror = true;
    this.setRotation(head5, 1.22173F, 0.1373543F, 0.2010743F);
    this.head6 = new ModelRenderer(this, 112, 0);
    this.head6.addBox(-4.6F, -6.5F, 4.5F, 1, 2, 7);
    this.head6.setRotationPoint(0F, 0F, 0F);
    this.head6.setTextureSize(256, 64);
    this.head6.mirror = true;
    this.setRotation(head6, 0.8726646F, -0.1745329F, -0.1745329F);
    this.head7 = new ModelRenderer(this, 102, 0);
    this.head7.addBox(-4.5F, -5F, 7F, 1, 1, 4);
    this.head7.setRotationPoint(0F, 0F, 0F);
    this.head7.setTextureSize(256, 64);
    this.head7.mirror = true;
    this.setRotation(head7, 1.256637F, -0.1396263F, -0.1570796F);
    this.head8 = new ModelRenderer(this, 92, 23);
    this.head8.addBox(-1F, -4F, 8F, 2, 2, 3);
    this.head8.setRotationPoint(0F, 0F, 0F);
    this.head8.setTextureSize(256, 64);
    this.head8.mirror = true;
    this.setRotation(head8, 0.7853982F, 0F, 0F);
    this.head9 = new ModelRenderer(this, 74, 23);
    this.head9.addBox(-2F, -5F, 11F, 4, 4, 4);
    this.head9.setRotationPoint(0F, 0F, 0F);
    this.head9.setTextureSize(256, 64);
    this.head9.mirror = true;
    this.setRotation(head9, 0.7853982F, 0F, 0F);
    this.head10 = new ModelRenderer(this, 74, 31);
    this.head10.addBox(-1.5F, -8.7F, 9F, 3, 5, 3);
    this.head10.setRotationPoint(0F, 0F, 0F);
    this.head10.setTextureSize(256, 64);
    this.head10.mirror = true;
    this.setRotation(head10, 0.2230717F, 0F, 0F);
    this.head11 = new ModelRenderer(this, 26, 40);
    this.head11.addBox(-1F, -6.7F, 8F, 2, 5, 2);
    this.head11.setRotationPoint(0F, 0F, 0F);
    this.head11.setTextureSize(256, 64);
    this.head11.mirror = true;
    this.setRotation(head11, 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);
   
    if(entity instanceof EntityPlayer) {
       EntityPlayer ep = (EntityPlayer)entity;
       if(ep.isSneaking() && !ep.isInWater()) {
          GL11.glPushMatrix();
          GL11.glTranslatef(0.0F, 0.1F, 0.0F);
          GL11.glRotatef(25.0F, 1.0F, 0.0F, 0.0F);
          GL11.glPopMatrix();
       }
    }
    head1.render(f5);
    head2.render(f5);
    head3.render(f5);
    head4.render(f5);
    head5.render(f5);
    head6.render(f5);
    head7.render(f5);
    head8.render(f5);
    head9.render(f5);
    head10.render(f5);
    head11.render(f5);
  }
  
  public void render(float f5) {
      this.head1.render(f5);
      this.head2.render(f5);
      this.head3.render(f5);
      this.head4.render(f5);
      this.head5.render(f5);
      this.head6.render(f5);
      this.head7.render(f5);
      this.head8.render(f5);
      this.head9.render(f5);
      this.head10.render(f5);
      this.head11.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);
  }


  
  

}

Рендер
Код:
package armorModel;

import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.util.ResourceLocation;
import api.player.render.RenderPlayerBase;
import api.player.render.RenderPlayerAPI;
import api.player.render.RenderPlayerBase;

public class RenderHelmet extends RenderPlayerBase {

    public RenderHelmet(RenderPlayerAPI renderPlayerAPI) {
        super(renderPlayerAPI);
    }    


    private Minecraft mc = Minecraft.getMinecraft();

    private static final ResourceLocation texture1 = new ResourceLocation("tm:textures/items/PicJ.png");

    private ModelHelmet helmet1 = new ModelHelmet();
    

          
    public void renderSpecials(AbstractClientPlayer par1AbstractClientPlayer, float par1, float par2, float par3, float par4, float par5, float par6) 
    {
        super.renderSpecials(par1AbstractClientPlayer, par2);
        
        if(par1AbstractClientPlayer.getCurrentArmor(0) != null) 
        {
                this.mc.getTextureManager().bindTexture(texture1);
                super.renderPlayerAPI.getModelBipedMainField().bipedHead.postRender(0.0625F);
                this.helmet1.render(par1AbstractClientPlayer, par1, par2, par3, par4, par5, par6);

            
       }
    }
   
}
 
Был неправильный рендер (нечаянно вставил текст из модели),исправил
 
Код:
public class RenderPlayerMod extends RenderPlayerBase {

    private final Minecraft mc = Minecraft.getMinecraft();

    public RenderPlayerMod(RenderPlayerAPI renderPlayerAPI) {
        super(renderPlayerAPI);
    }

    @Override
    public void afterRenderSpecials(AbstractClientPlayer paramAbstractClientPlayer, float paramFloat) {
        GL11.glPushMatrix();
        renderPlayer.modelBipedMain.bipedBody.postRender(0.0625F);
        //TODO
        if (paramAbstractClientPlayer.getCurrentArmor(2) != null) {
            if (paramAbstractClientPlayer.getCurrentArmor(2).getItem() instanceof ItemBackpack) {
                try {
                    ItemBackpack backpack = (ItemBackpack) paramAbstractClientPlayer.getCurrentArmor(2).getItem();
                    mc.renderEngine.bindTexture(backpack.getBackpackTexture());
                    ((BaseBackpackModel)backpack.getModel().newInstance()).render(0.0625F);
                } catch (InstantiationException ex) {
                    Logger.getLogger(RenderPlayerMod.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(RenderPlayerMod.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
        GL11.glPopMatrix();
    }
}
Грязно,но заменил что нужно(только не говорите,что рефлексия медленная. Я знаю)
 
Не мог бы ты объяснить что это?Его как новый класс создавать,ок,но что он делает?
 
Твой же рендер. Только рабочий. Объяснить не могу,так как даже не знаю как
 
А откуда ты этот код взял?Дай мне класс предмета , мне нужно кое что там посмотреть а именно насчет 
Код:
((ModelHelmet)backpack.getModel().newInstance()).render(0.0625F);
 
Мне сначало подчеркивает красным getModel и предлагает создать в классе предмета 
Код:
public Object getModel() {
        // TODO Auto-generated method stub
        return null;
    }
а далее подчеркивает newInstance .Вот я и хочу узнать за этот инстанс и что должно быть написано в классе предмета
 
Тебе же сказали на что заменить! Что ж ты такой то. Тем более если бы ты знал о рефлексии, то понял откуда метод(я даже написал). Я бы вообще тебе не помогал. Ты ничего не знаешь
 
Назад
Сверху