Баг с рендером рук

Сообщения
149
Лучшие ответы
1
Реакции
1
Версия Minecraft
1.6.4
Рендерю руки, и када им даю текстуру, она накладывается почему то на предмет.
look
Java:
import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraftforge.client.IItemRenderer;

public class RenderFN2000 implements IItemRenderer{
  
        private final float scale;
  
        public RenderFN2000(float scale){
            this.scale = scale;
        }

      @Override
        public boolean handleRenderType(ItemStack item, ItemRenderType type) {
            return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON;
        }

        @Override
        public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
            return false;
        }

        @Override
        public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
            switch (type){
            case EQUIPPED_FIRST_PERSON:
                renderEquippedItem(item, (EntityLivingBase) data[1], true);
                break;
            case EQUIPPED:
                renderEquippedItem(item, (EntityLivingBase) data[1], false);
                break;
            default:
            }
        }

        private void renderEquippedItem(ItemStack stack, EntityLivingBase entity, boolean firstPerson) {
        EntityPlayer ep = (EntityPlayer) entity;
        RenderPlayer er = (RenderPlayer) RenderManager.instance.getEntityRenderObject(ep);

            GL11.glPushMatrix();
            float f = scale;
            if (firstPerson) {
                f *= 1.8F;
            GL11.glPushMatrix();
                GL11.glTranslatef(0.6F, 0.12F, -0.96F);
                GL11.glScalef(0.6F, 1F, 1F);
                GL11.glRotatef(25, 40F, -10F, -20F);
                Minecraft.getMinecraft().renderEngine.bindTexture(Minecraft.getMinecraft().thePlayer.getLocationSkin());
                er.renderFirstPersonArm(ep);
            GL11.glPopMatrix();
          
            GL11.glPushMatrix();
                GL11.glTranslatef(-0.4F, 0.16F, -0.7F);
                GL11.glRotatef(10, 0F, 0F, -0.5F);
                if(Minecraft.getMinecraft().thePlayer.isSprinting()){
                    GL11.glRotatef(10, -1F, 0F, -0.6F);
                }

            GL11.glPopMatrix();
            } else {
                f *= (entity instanceof EntityPlayer ? 2.1F : 2F);
                GL11.glTranslatef(1.14F - f, -0.3F * scale, 0.01F * scale);
            }
            GL11.glScalef(f, f, f);
            Icon icon = stack.getItem().getIcon(stack, 0);
            Tessellator tessellator = Tessellator.instance;
            ItemRenderer.renderItemIn2D(tessellator, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.036F);
            GL11.glPopMatrix();
        }
  
}

Screenshot_1.png
 
Сообщения
608
Лучшие ответы
5
Реакции
12
Потому что надо забиндить атлас предметов перед рендером предмета)
 
Сообщения
149
Лучшие ответы
1
Реакции
1
Ещо актуально
 
Сообщения
960
Лучшие ответы
45
Реакции
294
После рендера рук пиши:
Java:
TextureManager manager = Minecraft.getMinecraft().renderEngine;
manager.bindTexture(manager.getResourceLocation(1));
 
Сообщения
149
Лучшие ответы
1
Реакции
1
UP!
 
Сообщения
149
Лучшие ответы
1
Реакции
1
Сделал рендер с obj моделью, сделал руку, вот.
А когда начинаю двигаться, то ее вместе с рукой начинает дико шатать, что не есть хорошо
С чем это может быть связано? С самой моделью? С кривым рендером?
А еще пол руки нет, хотя у ФН'ки есть.
Java:
import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;

public class RenderPM implements IItemRenderer{
    
        IModelCustom model;
        ResourceLocation texture = new ResourceLocation("coolmyfolken" ,"textures/models/obj/pm.png");
    
        public RenderPM(){
            model = AdvancedModelLoader.loadModel("/assets/coolmyfolken/models/obj/szPM.obj");
        }

      @Override
        public boolean handleRenderType(ItemStack item, ItemRenderType type) {
            return type == ItemRenderType.EQUIPPED || type == ItemRenderType.EQUIPPED_FIRST_PERSON;
        }

        @Override
        public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
            return false;
        }

        @Override
        public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
            switch (type){
            case EQUIPPED_FIRST_PERSON:
                renderEquippedItem(item, (EntityLivingBase) data[1], true);
                break;
            case EQUIPPED:
                renderEquippedItem(item, (EntityLivingBase) data[1], false);
                break;
            default:
            }
        }

        private void renderEquippedItem(ItemStack stack, EntityLivingBase entity, boolean firstPerson) {
        EntityPlayer ep = (EntityPlayer) entity;
        RenderPlayer er = (RenderPlayer) RenderManager.instance.getEntityRenderObject(ep);

            GL11.glPushMatrix();
            Minecraft.getMinecraft().renderEngine.bindTexture(texture);
            if (firstPerson) {

        //right hand
            GL11.glPushMatrix();
                GL11.glTranslatef(-0.486F, 0.496F, -1.003F);
                GL11.glRotatef(60, 10F, 70F, -30F);
                GL11.glRotatef(55, 40F, 70F, -30F);
                GL11.glScalef(0.12F, 0.14F, 0.12F);
            Minecraft.getMinecraft().renderEngine.bindTexture(Minecraft.getMinecraft().thePlayer.getLocationSkin());
            er.renderFirstPersonArm(ep);
            GL11.glPopMatrix();
            
            TextureManager manager = Minecraft.getMinecraft().renderEngine;
            manager.bindTexture(manager.getResourceLocation(1));
            
            Minecraft.getMinecraft().renderEngine.bindTexture(texture);
                GL11.glTranslatef(-0.4F, 0.56F, -0.98F);
                GL11.glRotatef(-38, -60F, 60F, 10F);
                GL11.glRotatef(-65, 0F, 10F, -20F);
                GL11.glRotatef(-20, -2F, 20F, 19F);
                GL11.glScalef(0.009F, 0.008F, 0.007F);
            } else {
                GL11.glTranslatef(0.76F, 0.3F, 0.01F);
                GL11.glRotatef(20, 0F, -40F, 10F);
                GL11.glRotatef(84, 13F, -40F, 10F);
                GL11.glScalef(0.05F, 0.05F, 0.05F);
            }
            model.renderAll();
            GL11.glPopMatrix();
        }
    
}

Вот как это выглядит
javaw 2018-01-03 12-00-26-867
 
Сообщения
4,679
Лучшие ответы
45
Реакции
611
Код:
   IModelCustom model;
        ResourceLocation texture = new ResourceLocation("coolmyfolken" ,"textures/models/obj/pm.png");
    
        public RenderPM(){
            model = AdvancedModelLoader.loadModel("/assets/coolmyfolken/models/obj/szPM.obj");
        }
:D
 
Сообщения
149
Лучшие ответы
1
Реакции
1
Сообщения
149
Лучшие ответы
1
Реакции
1
В общем то, написал другой рендер, поставил другую модель, но хоть покачивание и уменьшилось, оно все равно сильное. Так как уменьшить его?
 
Сверху