Fixed a few issues and added more functionality

Fixed player not rendering in third person and armor arm0 not moving with 64x64 skins. Added offsets to held item (main hand) and armor (boots).
This commit is contained in:
Langtanium 2026-04-18 11:41:06 -07:00
parent 0c50f9982c
commit cef65c8df3
8 changed files with 306 additions and 39 deletions

View file

@ -286,6 +286,7 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
float xo = 0.0f;
float yo = 0.3f;
float zo = 0.0f;
// Re position height of held item if skin is small
@ -301,8 +302,39 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
}
}
// Change height of held item by tool0 and arm0 offset
shared_ptr<Player> player = dynamic_pointer_cast<Player>(mob);
vector<SKIN_OFFSET *>* pModelOffsets = nullptr;
if (player != nullptr)
pModelOffsets = player->GetModelOffsets();
if (pModelOffsets != nullptr)
{
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
{
switch (pModelOffset->ePart)
{
case eBodyOffset_Arm0:
if(pModelOffset->fD == 1)
xo += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
zo += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
yo += pModelOffset->fO / 16.0f;
break;
case eBodyOffset_Tool0:
if(pModelOffset->fD == 1)
xo += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
zo += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
yo += pModelOffset->fO / 16.0f;
break;
}
}
}
glEnable(GL_RESCALE_NORMAL);
glTranslatef(-xo, -yo, 0);
glTranslatef(-xo, -yo, -zo);
float s = 1.5f;
glScalef(s, s, s);