Плавающее положение.

Версия Minecraft
1.7.10
Сделал аквалангический костюм. Всё работает но я больше привык к реальности. Поэтому спрашиваю. Как сделать что бы когда игрок был в воде, он был в плавающем положение (наклонённом)?

ATZcxWsvlAg.jpg fX6TKp8YQLM.jpg HVTDLK1_yck.jpg Iep04lgXOzA.jpg rYoqSTqZtz8.jpg
 
Решение
Я клоню к тому, что тебе понадобится эвент RenderPlayerEvent.Specials.(Тут уже выбираешь)
Я делал наклон туловища и руки убирал назад вот так:
Java:
    @SubscribeEvent
    public void renderPlayerPost(RenderPlayerEvent.Specials.Post e)
    {           
            if (e.entityPlayer.isSprinting()) {
                e.renderer.modelBipedMain.bipedLeftLeg.offsetZ=0.25F;
                e.renderer.modelBipedMain.bipedRightLeg.offsetZ=0.25F;
                e.renderer.modelBipedMain.bipedLeftLeg.offsetY=-0.05F;
                e.renderer.modelBipedMain.bipedRightLeg.offsetY=-0.05F;
                e.renderer.modelBipedMain.bipedBody.showModel = false;
                e.renderer.modelBipedMain.bipedRightArm.showModel = false...
1,417
44
594
Проверяешь, что y координата(x,y,z) игрока в воде и (x.y+1,z) в воде.
Если это так, то в эвенте RenderPlayerEvent.Specials.Post вертишь модель как хочешь. Можешь даже выключить отображение ванильной и сделать как ты хочешь своей
 
1,417
44
594
Я клоню к тому, что тебе понадобится эвент RenderPlayerEvent.Specials.(Тут уже выбираешь)
Я делал наклон туловища и руки убирал назад вот так:
Java:
    @SubscribeEvent
    public void renderPlayerPost(RenderPlayerEvent.Specials.Post e)
    {           
            if (e.entityPlayer.isSprinting()) {
                e.renderer.modelBipedMain.bipedLeftLeg.offsetZ=0.25F;
                e.renderer.modelBipedMain.bipedRightLeg.offsetZ=0.25F;
                e.renderer.modelBipedMain.bipedLeftLeg.offsetY=-0.05F;
                e.renderer.modelBipedMain.bipedRightLeg.offsetY=-0.05F;
                e.renderer.modelBipedMain.bipedBody.showModel = false;
                e.renderer.modelBipedMain.bipedRightArm.showModel = false;
                e.renderer.modelBipedMain.bipedLeftArm.showModel = false;
                e.renderer.modelBipedMain.bipedLeftLeg.showModel = false;
                e.renderer.modelBipedMain.bipedRightLeg.showModel = false;
                ModelBiped mb = new ModelBiped();
                GL11.glPushMatrix(); {
                    if (e.entityPlayer instanceof EntityClientPlayerMP)
        Minecraft.getMinecraft().renderEngine.bindTexture(((EntityClientPlayerMP)e.entityPlayer).getLocationSkin());
                        else
        Minecraft.getMinecraft().renderEngine.bindTexture(AbstractClientPlayer.locationStevePng);
            
                    GL11.glPushMatrix();
                    GL11.glRotatef(0, 0F, 0F, 0F);
                    GL11.glRotatef(20F, 1F, 0F, 0F);
                    mb.bipedBody.render(0.0625F);
                    GL11.glPopMatrix();

                    GL11.glPushMatrix();
                    GL11.glRotatef(0, 0F, 0F, 0F);
                    GL11.glRotatef(70F, 1F, 0F, 0F);
                    mb.bipedLeftArm.render(0.0625F);
                    GL11.glPopMatrix();

                    GL11.glPushMatrix();
                    GL11.glRotatef(70F, 1F, 0F, 0F);
                    mb.bipedRightArm.render(0.0625F);
                    GL11.glPopMatrix();
                    

                    GL11.glPushMatrix();
                    GL11.glTranslated(0, -0.1, 0.27);
                    mb.bipedRightLeg.rotateAngleX = e.renderer.modelBipedMain.bipedRightLeg.rotateAngleX*1.2F;
                    mb.bipedRightLeg.render(0.0625F);
                    GL11.glPopMatrix();
                    
                    GL11.glPushMatrix();
                    GL11.glTranslated(0, -0.1, 0.27);
                    GL11.glScaled(1, 1, 1);
                    mb.bipedLeftLeg.rotateAngleX = e.renderer.modelBipedMain.bipedLeftLeg.rotateAngleX*1.2F;
                    mb.bipedLeftLeg.render(0.0625F);
                    GL11.glPopMatrix();
                    //e.renderer.modelBipedMain.bipedLeftLeg.rotateAngleX
                    
                    //modelBipedMain.bipedBody.rotateAngleX * (180F / (float)Math.PI)
                    
                } GL11.glPopMatrix();

            } else {
                e.renderer.modelBipedMain.bipedLeftLeg.offsetZ=0;
                e.renderer.modelBipedMain.bipedRightLeg.offsetZ=0;
                e.renderer.modelBipedMain.bipedLeftLeg.offsetY=-0;
                e.renderer.modelBipedMain.bipedRightLeg.offsetY=-0;
                e.renderer.modelBipedMain.bipedBody.showModel = true;
                e.renderer.modelBipedMain.bipedRightArm.showModel = true;
                e.renderer.modelBipedMain.bipedLeftArm.showModel = true;
                e.renderer.modelBipedMain.bipedLeftLeg.showModel = true;
                e.renderer.modelBipedMain.bipedRightLeg.showModel = true;                   
            }
        
    }
При беге. Попробуй
 
1,417
44
594
Ой блеа... Ты засираешь память.
Ну так ты ванильные то не сможешь двигать, ибо они там используются и вращение по осям x, y недоступны, как и передвижение. Чтобы не засирать память придется хукать методы, где юзается модель, но это больше гемора, как по мне.
а как насчёт брони? она же будет как обычно
В e.renderer.modelBipedMain, если не ошибаюсь, хранятся бипеды и моделей

@Tenebrius, а вещи в руках, и зрение?
Java:
    @SubscribeEvent

    public void renderPlayerPre(RenderPlayerEvent.Specials.Pre e) {

        if (e.entityPlayer.isSprinting()) {

            e.renderItem... //Тут вращай, крути их, как хочешь

        }

    }
 
5,018
47
783
Сверху