- 1,007
- 36
- 206
Сделал всё, что хотел, но тут неприятный баг. Модель рендерится не на том игроке
Справа хост, слева клиент. И такое происходит только когда игрок слева видит игрока справа(попадает экран). Какие есть варианты, чтобы закрепить этот куст только за нужным игроком?
Java:
@SideOnly(Side.CLIENT)
@SubscribeEvent
public void changePlayerRender(RenderPlayerEvent.Pre event) {
if(((EntityPlayer) event.entity).getEntityAttribute(MODID.MODEL).getAttributeValue() == 1 && ((EntityPlayer) event.entity).isSneaking()){
event.setCanceled(true);
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, -2.28F, 0.0F);
GL11.glScalef(0.1F, 0.1F, 0.1F);
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
Minecraft.getMinecraft().renderEngine.bindTexture(texture2);
GL11.glDisable(GL11.GL_LIGHTING);
model.render(null, 0, 0, 0, 0, 0, 0.625F);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
if(((EntityPlayer) event.entity).getEntityAttribute(MODID.MODEL).getAttributeValue() == 1 && !((EntityPlayer) event.entity).isSneaking()){
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, -1.5F, 0.0F);
GL11.glScalef(0.08F, 0.08F, 0.08F);
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
GL11.glRotated(interpolate(((EntityPlayer) event.entity).prevRenderYawOffset, ((EntityPlayer) event.entity).renderYawOffset, event.partialRenderTick), 0, 1, 0);
Minecraft.getMinecraft().renderEngine.bindTexture(texture2);
GL11.glDisable(GL11.GL_LIGHTING);
if (color != -1) {
float red = (float)(color >> 16 & 255) / 255F;
float blue = (float)(color >> 8 & 255) / 255F;
float green = (float)(color & 255) / 255F;
GL11.glColor3f(red, blue, green);
}
model.render(null, 0, 0, 0, 0, 0, 0.625F);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
}
public static double interpolate(double last, double now, float partialTicks) {
return last + (now - last) * partialTicks;
}