Рендер рук к мечу

19
0
Подскажите, как к примеру мечу добавить руки от первого лица?
Иле скинте ссылочку на эту тему.
Зарание спасибо!
 
Ну ладно, начну.
Есть строка 
Код:
public RenderUModel() {
      model1 = new ModelHand();
   }

Это класс с рендером рук.
Руки:
Код:
package test;

import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;

public class ModelHand extends ModelBase
{
  //fields
    ModelRenderer rightarm;
    ModelRenderer leftarm;
  
  public ModelHand()
  {
    textureWidth = 64;
    textureHeight = 32;
    
      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);
  }
  
  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);
    rightarm.render(f5);
    leftarm.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);
  }
  public void render_left() {
      float f5 = 0.0625F;
        leftarm.render(f5);
        
  }
  public void render_right() {
      float f5 = 0.0625F;
        rightarm.render(f5);
  }
}
Создаешь в рендере переменную:
Код:
private static ModelHand model1;

Дальше код рендера(Предмет с руками!!!)
Код:
 public void renderItem(ItemRenderType type, ItemStack is, Object ... data) {
   GL11.glPushMatrix();
   GL11.glEnable(3042);
   GL11.glBlendFunc(770, 771);
   GL11.glTranslatef(-0.7F, 1.25F, 0.7F);
   GL11.glRotatef(132.0F, 0.0F, 1.0F, 0.0F);
   GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F);
   GL11.glScaled(0.03D, 0.03D, 0.03D);
   Minecraft.getMinecraft().renderEngine.bindTexture(tex);
   /*if(Mouse.isButtonDown(1)){
       GL11.glTranslatef(23F, 0F, -7F);
       GL11.glRotatef(3.0F, 0.0F, 1.0F, 0.0F);
  }*/ 
   if(Minecraft.getMinecraft().thePlayer.isSprinting()) {
          GL11.glScaled(1D, 1D, 1D);
          GL11.glRotatef(80.0F, 0.0F, 1.0F, 0.0F);
          GL11.glRotated(0, 1, 1, 0);
          GL11.glTranslated(-5, 1, -5);
}
model.renderAll();
GL11.glDisable(3042);
GL11.glPopMatrix();
if(type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
   GL11.glPushMatrix();
   /*
   if(Mouse.isButtonDown(1)){
       GL11.glTranslatef(-0.6F, 0F, -0.45F);
       GL11.glRotatef(0.0F, 0.0F, 0.0F, 0.0F);
   }
   */
   if(Minecraft.getMinecraft().thePlayer.isSprinting()) {
          GL11.glScaled(1D, 1D, 1D);
          GL11.glTranslatef(-1.1F, 0F, -0.15F);
          GL11.glRotatef(80.0F, 0.0F, 1.0F, 0.0F);
}
   GL11.glTranslatef(0.1F, 1.55F, -0.1F);
   GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
   GL11.glRotatef(-130.0F, 0.0F, 1.0F, 0.0F);
   GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
   GL11.glTranslatef(-0.35F, -2.1F, -0.3F);
   GL11.glScaled(1.3D, 1.4D, 1.0D);
   Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/entity/steve.png"));
   model1.render_left();
   GL11.glPopMatrix();
   GL11.glPushMatrix();
   /*
   if(Mouse.isButtonDown(1)){
       GL11.glTranslatef(-0.6F, 0F, -0.45F);
       GL11.glRotatef(0.0F, 0.0F, 0.0F, 0.0F);
   }
   */
   if(Minecraft.getMinecraft().thePlayer.isSprinting()) {
          GL11.glScaled(1D, 1D, 1D);
          GL11.glTranslatef(-1.0F, 0F, -0.2F);
          GL11.glRotatef(50.0F, 0.0F, 1.0F, 0.0F);
}
   GL11.glTranslatef(0.3F, 1.4F, -0.3F);
   GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
   GL11.glRotatef(-100.0F, 0.0F, 1.0F, 0.0F);
   GL11.glRotatef(95.0F, 1.0F, 0.0F, 0.0F);
   GL11.glTranslatef(0.9F, -2.55F, -0.15F);
   GL11.glScaled(1.4D, 3.0D, 1.4D);
   Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/entity/steve.png"));
   model1.render_right();
   GL11.glPopMatrix();
   }
}
}
Усе))
 
Мне тимаха писал в одной теме.Эта вроде бы тема про его мод в форуме"в разработке"
P.S.Используй switch-case блоки
 
Можно прямо к модели прикрутить, а в методе render добавить аргумент isFirstPerson, и рендерить руки, только если он true.
У меня вообще была отдельная модель руки, которую я в каждую свою модель пихал, у неё текстура от Стива бралась. Легче лёгкого сделать.
 
Назад
Сверху