Хотел я сделать так, что если игрок держит меч в руках, то рука тоже рендерилась. Решил делать хук в renderItemInFirstPerson, но получилось лишь то, что видно на скрине. Рука двигается, все хорошо, на надо бы сдвинуть предмет вперед и рука почему то темная. может кто подсказать, как лучше сделать?
код:
код:
код:
@Hook(injectOnExit = true)
public static void renderItemInFirstPerson(ItemRenderer renderer, float par1)
{
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
RenderHelper.enableStandardItemLighting();
Minecraft mc = Minecraft.getMinecraft();
if(mc.thePlayer.inventory.getCurrentItem() != null && mc.thePlayer.inventory.getCurrentItem().getItem().isFull3D())
{
EntityClientPlayerMP entityclientplayermp = mc.thePlayer;
ItemStack itemstack = mc.thePlayer.inventory.getCurrentItem();
int i = Item.itemsList[itemstack.itemID].getColorFromItemStack(itemstack, 0);
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
float f5 = mc.theWorld.getLightBrightness(MathHelper.floor_double(entityclientplayermp.posX), MathHelper.floor_double(entityclientplayermp.posY), MathHelper.floor_double(entityclientplayermp.posZ));
float f7 = (float)(i >> 16 & 255) / 255.0F;
float f8 = (float)(i >> 8 & 255) / 255.0F;
float f6 = (float)(i & 255) / 255.0F;
GL11.glColor4f(f5 * f7, f5 * f8, f5 * f6, 1.0F);
//GL11.glColor3f(1.0f, 1.0f, 1.0f);
//GL11.glDisable(GL11.GL_LIGHTING);
if(f1 <1)
f1 += 0.075f;
Render render;
RenderPlayer renderplayer;
mc.getTextureManager().bindTexture(mc.thePlayer.getLocationSkin());
GL11.glPushMatrix();
float f12 = 0.8F;
f7 = entityclientplayermp.getSwingProgress(par1);
f8 = MathHelper.sin(f7 * (float)Math.PI);
f6 = MathHelper.sin(MathHelper.sqrt_float(f7) * (float)Math.PI);
GL11.glTranslatef(-f6 * 0.3F, MathHelper.sin(MathHelper.sqrt_float(f7) * (float)Math.PI * 2.0F) * 0.4F, -f8 * 0.4F);
GL11.glTranslatef(0.8F * f12, -0.75F * f12 - (1.0F - f1) * 0.6F, -0.9F * f12);
GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
f7 = entityclientplayermp.getSwingProgress(par1);
f8 = MathHelper.sin(f7 * f7 * (float)Math.PI);
f6 = MathHelper.sin(MathHelper.sqrt_float(f7) * (float)Math.PI);
GL11.glRotatef(f6 * 70.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(-f8 * 20.0F, 0.0F, 0.0F, 1.0F);
mc.getTextureManager().bindTexture(entityclientplayermp.getLocationSkin());
GL11.glTranslatef(-1.0F, 3.6F, 3.5F);
GL11.glRotatef(120.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(200.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
GL11.glScalef(1.0F, 1.0F, 1.0F);
GL11.glTranslatef(5.6F, 0.0F, 0.0F);
render = RenderManager.instance.getEntityRenderObject(mc.thePlayer);
renderplayer = (RenderPlayer)render;
float f11 = 1.0F;
GL11.glScalef(f11, f11, f11);
renderplayer.renderFirstPersonArm(mc.thePlayer);
GL11.glPopMatrix();
GL11.glColor3f(1.0f, 1.0f, 1.0f);
}else f1 = 0;
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL11.GL_LIGHTING);
}