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

1,990
18
105
Нет, ты втираешь мне какую-то дичь. Такого быть в принципе не может. Показывай весь код до и после вставки этих методов.
 
643
6
14
Oldestkon написал(а):
Нет, ты втираешь мне какую-то дичь. Такого быть в принципе не может. Показывай весь код до и после вставки этих методов.
Я ему так же говорю
 
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
5
1,239
2
24
Фу фу фу дровосек.Не надо кидать это.Сам нашел этот урок,у людей там проблем куча возникло,и кстати мой тутор(кто помнит) частично был собран по кусочкам из этой темы
 
329
13
Гайд хороший, но попытка создать не шапку, а броню привела к 2-дневному марафону. :lol:
Результат (1.8):
image.png
 
627
72
178
Гайд годный, шикарный даже. Но вот сама идея java моделей кажется грустной. Когда рендерится, активно прибавляет к пожиранию ОЗУ 2-4МБ/с
 
части модели брони оказывали не на своём месте.
Такая же фигня. Но я решил всё проще, просто передвигаю на нужную позицию, например ноги на 12 вверх и на 4 в бок для одной ноги в одну сторону, для другой в другую (у каждого по разному). С руками так же, а с головой всё норм.
 
Сверху