[1.6.4] Гайд: Создание брони с нестандартной моделью

Сообщения
1,975
Лучшие ответы
16
Реакции
83
Нет, ты втираешь мне какую-то дичь. Такого быть в принципе не может. Показывай весь код до и после вставки этих методов.
 
Сообщения
606
Лучшие ответы
2
Реакции
4
Oldestkon написал(а):
Нет, ты втираешь мне какую-то дичь. Такого быть в принципе не может. Показывай весь код до и после вставки этих методов.
Я ему так же говорю
 
Сообщения
66
Лучшие ответы
0
Реакции
1
Oldestkon написал(а):
Нет, ты втираешь мне какую-то дичь. Такого быть в принципе не может. Показывай весь код до и после вставки этих методов.

Вот:

Код предмета броньки:


Код:
package com.minez.coremod;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;

public class Green_Helmet extends ItemArmor  {

    public Green_Helmet (int par1) {
        super(par1, EnumArmorMaterial.CHAIN, 0, 0);
        this.setCreativeTab(CoreMod.CreativeTabs_medic);
    }
    
    @SideOnly(Side.CLIENT)
    
    @Override
    public void registerIcons(IconRegister par1IconRegister) {
        this.itemIcon = par1IconRegister.registerIcon(ModInformation.MODID+":"+"icon_name");
    }

    @Override
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
       if (slot == 0)
            return ModInformation.MODID + ":textures/armor/" + "texture_name.png";
       return ModInformation.MODID + ":textures/armor/" + "texture_name.png";
    }
    
    @SideOnly(Side.CLIENT)
    
    @Override 
    public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
        if (armorSlot != 0)
            return null;
       
        if (itemStack != null && itemStack.getItem() instanceof Green_Helmet) {
            ModelBiped model = ClientProxy.getArmorModel();
            return model;
        }
        else
            return null;
    } 
}
Код модели брони (привязан к RenderPlayerApi)

Код:
package com.minez.models;

import java.util.ArrayList;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.client.FMLClientHandler;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ResourceLocation;

public class Model_Green_Helmet extends ModelBiped
{
    ModelRenderer Shape1;
    ModelRenderer Shape2;
    ModelRenderer Shape3;
    ModelRenderer Shape4;
    ModelRenderer Shape5;
    ModelRenderer Shape6;  
    ResourceLocation mgh_texture = new ResourceLocation("minez:textures/path/green_helmet.png");
  public Model_Green_Helmet()
  {
    textureWidth = 64;
    textureHeight = 32;
    
      Shape1 = new ModelRenderer(this, 0, 0);
      Shape1.addBox(-4F, -8.5F, -4F, 8, 1, 8);
      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(-4.5F, -8F, -4F, 1, 8, 8);
      Shape2.setRotationPoint(0F, 0F, 0F);
      Shape2.setTextureSize(64, 32);
      Shape2.mirror = true;
      setRotation(Shape2, 0F, 0F, 0F);
      Shape3 = new ModelRenderer(this, 0, 0);
      Shape3.addBox(-4F, -8F, 3.5F, 8, 8, 1);
      Shape3.setRotationPoint(0F, 0F, 0F);
      Shape3.setTextureSize(64, 32);
      Shape3.mirror = true;
      setRotation(Shape3, 0F, 0F, 0F);
      Shape4 = new ModelRenderer(this, 0, 0);
      Shape4.addBox(-4F, -8F, -4.5F, 8, 8, 1);
      Shape4.setRotationPoint(0F, 0F, 0F);
      Shape4.setTextureSize(64, 32);
      Shape4.mirror = true;
      setRotation(Shape4, 0F, 0F, 0F);
      Shape5 = new ModelRenderer(this, 0, 0);
      Shape5.addBox(3.5F, -8F, -4F, 1, 8, 8);
      Shape5.setRotationPoint(0F, 0F, 0F);
      Shape5.setTextureSize(64, 32);
      Shape5.mirror = true;
      setRotation(Shape5, 0F, 0F, 0F);
      Shape6 = new ModelRenderer(this, 0, 0);
      Shape6.addBox(-4F, -0.5F, -4F, 8, 1, 8);
      Shape6.setRotationPoint(0F, 0F, 0F);
      Shape6.setTextureSize(64, 32);
      Shape6.mirror = true;
      setRotation(Shape6, 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);
    this.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    FMLClientHandler.instance().getClient().getTextureManager().bindTexture(this.mgh_texture);
    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();
       }
    }
    
    this.Shape1.render(f5);
    this.Shape2.render(f5);
    this.Shape3.render(f5);
    this.Shape4.render(f5);
    this.Shape5.render(f5);
    this.Shape6.render(f5);
  }
      public void render (float f5) {
    this.Shape1.render(f5);
    this.Shape2.render(f5);
    this.Shape3.render(f5);
    this.Shape4.render(f5);
    this.Shape5.render(f5);
    this.Shape6.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 par4, float par5, float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
        super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); 
    }
}

Код ClientProxy:


Код:
package com.minez.coremod;

import net.minecraft.client.model.ModelBiped;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.MinecraftForgeClient;

import com.minez.api.player.render.RenderPlayerAPI;
import com.minez.foods.FoodList;
import com.minez.items.ItemsList;
import com.minez.models.Model_Green_Helmet_2;
import com.minez.renders.bandage_render;
import com.minez.renders.c_bob_render;

public class ClientProxy extends CommonProxy    
{
    
    public static Model_Green_Helmet_2 mgh = new Model_Green_Helmet_2();

    @Override
    public void initMod()
    {
        super.initMod();
        
        MinecraftForgeClient.registerItemRenderer(ItemsList.Bandage.itemID, (IItemRenderer) new bandage_render());
        MinecraftForgeClient.registerItemRenderer(FoodList.c_bob.itemID, (IItemRenderer) new c_bob_render());
        
    }
    public void renderSetup()
    {
        RenderPlayerAPI.register("minez", RenderPlayerMOD.class);
    }
    public static ModelBiped getArmorModel() {
        return mgh;
    }
}
И на всякий случай оставлю код RenderPlayerMOD:


Код:
package com.minez.coremod;

import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.AbstractClientPlayer;
import net.minecraft.util.ResourceLocation;

import com.minez.api.player.render.RenderPlayerAPI;
import com.minez.api.player.render.RenderPlayerBase;
import com.minez.models.Model_Green_Helmet_2;

public class RenderPlayerMOD extends RenderPlayerBase {

    private Minecraft mc = Minecraft.getMinecraft();

    private static final ResourceLocation mgh_texture = new ResourceLocation("minez:textures/models/green_helmet.png");

    private Model_Green_Helmet_2 mgh = new Model_Green_Helmet_2();

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

    public void renderSpecials(AbstractClientPlayer par1AbstractClientPlayer, float par2) {
        super.renderSpecials(par1AbstractClientPlayer, par2);
        if(par1AbstractClientPlayer.getCurrentArmor(0) != null) {
            if(par1AbstractClientPlayer.getCurrentArmor(0).itemID == CoreMod.Green_Helmet.itemID) {
                this.mc.getTextureManager().bindTexture(mgh_texture);
                super.renderPlayerAPI.getModelBipedMainField().bipedHead.postRender(0.0625F);
                this.mgh.render(0.0625F);
            }
        }
    }
}
В чем может быть проблема?

P.S не кидайтесь тапками...
 
Сообщения
471
Лучшие ответы
0
Реакции
1
Сообщения
1,235
Лучшие ответы
2
Реакции
9
Фу фу фу дровосек.Не надо кидать это.Сам нашел этот урок,у людей там проблем куча возникло,и кстати мой тутор(кто помнит) частично был собран по кусочкам из этой темы
 
Сообщения
323
Лучшие ответы
0
Реакции
1
Гайд хороший, но попытка создать не шапку, а броню привела к 2-дневному марафону. :lol:
Результат (1.8):
 
Сообщения
97
Лучшие ответы
6
Реакции
29
Гайд годный, шикарный даже. Но вот сама идея java моделей кажется грустной. Когда рендерится, активно прибавляет к пожиранию ОЗУ 2-4МБ/с
 

Agravaine

Модератор
Сообщения
5,082
Лучшие ответы
233
Реакции
874
Ты, наверное, глупенький, в рендере создаёшь постоянно новый объект модели.
 
Сообщения
219
Лучшие ответы
1
Реакции
8
части модели брони оказывали не на своём месте.
Такая же фигня. Но я решил всё проще, просто передвигаю на нужную позицию, например ноги на 12 вверх и на 4 в бок для одной ноги в одну сторону, для другой в другую (у каждого по разному). С руками так же, а с головой всё норм.
 
Сверху