Рендер моделек поверх игрока

Версия Minecraft
1.7.10
API
Forge
48
2
9
У меня проблема с рендером моделек поверх модели игрока. Я перехватываю RenderPlayerEvent.Pre и в нем рисую модельку. Все работает хорошо когда рендерится модель для клиента, но когда идет очередь рендера других игроков, которые тоже имеют модельку поверх себя, то почему-то их рендер начинается с позиции клиента, а не игрока для которого происходит рендер. При чем все остальное (вращения модельки в зависимости от угла поворота тела и тд) работает как для того игрока, на котором и должно было все рендериться.
С чем это может быть связано и как это можно решить? Пробовал так же и RenderPlayerEvent.Specials.Pre, там почему-то все наоборот: позиция совпадает с позицией нужного игрока, а вращение в зависимости от угла поворота тела не происходит (вернее срабатывает, но потом быстро возвращается к исходному значению).
Вот так же код рендера:
Java:
GL11.glPushMatrix();
GL11.glScalef(0.2F, 0.2F, 0.2F);
GL11.glRotatef(-player.renderYawOffset - 90, 0, 1, 0); // поворот за телом игрока
GL11.glRotatef(180, 0, 0, 1);
GL11.glTranslatef(0F, -5.5F, 1.5F);
if (player.inventory.armorInventory[1] != null) { // смещение, если на игроке поножи
    GL11.glTranslatef(0, 0, 0.2F);
}
if (player.isSneaking()) { // смещение, если игрок крадется
    GL11.glTranslatef(-1, 0, 0);
}
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
GL11.glCallList(list); // рендер модели
GL11.glPopMatrix();
 
48
2
9

tox1cozZ

aka Agravaine
8,456
598
2,892
Не до конца понял, для чего нужен postRenderer?
Чтобы применить трансформацию части тела. Тогда твоя модель "прилипнет" к ней и не надо будет самому вращать за головой.
 
  • Like
Реакции: klas
48
2
9
Чтобы применить трансформацию части тела. Тогда твоя модель "прилипнет" к ней и не надо будет самому вращать за головой.
Сорри, но все еще не понимаю как оно должно сработать. Вот я добавил postRenderer его в начале своего рендера, убрал поворот за телом игрока, но изначальная позиция рисованной модели все равно равна позиции клиента, а не игрока на котором модель должна рисоваться. Да и как я понял postRenderer меняет угол, а не позицию, а с углом поворота у меня все норм (GL11.glRotatef(-player.renderYawOffset - 90, 0, 1, 0);)
Java:
GL11.glPushMatrix();
GL11.glScalef(0.2F, 0.2F, 0.2F);
renderer.modelBipedMain.bipedBody.postRender(0.0625F);
GL11.glTranslatef(0F, -5.5F, 1.5F);
if (player.inventory.armorInventory[1] != null) {
    GL11.glTranslatef(0, 0, 0.2F);
}
if (player.isSneaking()) {
    GL11.glTranslatef(-1, 0, 0);
}
Minecraft.getMinecraft().renderEngine.bindTexture(texture);
GL11.glCallList(list);
GL11.glPopMatrix();
 
Сверху