Вторая рука

Версия Minecraft
1.7.10
51
0
Привет. Хотел сделать вторую руку котрая бы появлялась при каком-то условии, но запутался оконачательно. Столько информации, что сложно найти что-то конкретно. Если в общем я хочу сделать руку, котррая бы появлялась при снеге и дожде и закрывала бы левый угол экрана от первого лица. Что мне нужно для этого? Как это можно реализовать?
 
Решение
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
 
Попробуй изменить модель ModelBiped модом. типо уберая левую руку и создай на лицо игрока руку сделай её левой, сделай рендер что-бы было видно руку перед кубом(8x8x8)(лицом).
o_OЧувак. Не пиши ничего. Не надо пытаться так помочь, у меня инфаркт будет.
 
o_OЧувак. Не пиши ничего. Не надо пытаться так помочь, у меня инфаркт будет.
xD
Так почему это плохо? во время weather Вместо обычной левой руки появляеться модель допустим из 3-х шейпов.
Было так:

Java:
  ____
 /    \
 \____/
   ||
 /====\
 |====|
 |====|
  ====
Стало так:

Код:
  ____
 /  \ \
 \___\/
   || |
 /====/
 |====
 |====
  ====
 
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
попробую покопать в этом направлении. Спасибо.
 
В EnityRenderer ищи что то связанное с рукой от первого лица. Копипасти рендер, и через эвент (не помню какой для 1.7, вроде еть какой то RenderHandEvent) рендери себе руку со смещением каким надо
Я тебя правильно понял, что мне нужно найти рендер руки майновской. Потом вызвать его в ивенте отрисовки руки?
 
Да
 
Cделал все как ты говорил. Откопал код ренедринга руки в энтети рендер. Но там столько переменных. Что мне делать? Переносить-дублировать их?
То что не используеться оставь, и попробуй класс твой унаследовать от "ЕнтитиРендер".
 
Cделал все как ты говорил. Откопал код ренедринга руки в энтети рендер. Но там столько переменных. Что мне делать? Переносить-дублировать их?
P.S. может не сработать
 
То что не используеться оставь, и попробуй класс твой унаследовать от "ЕнтитиРендер".
Замолчи, ты вообще чушь несешь. Не сбивай его с верного пути..))
 
Замолчи, ты вообще чушь несешь. Не сбивай его с верного пути..))
Я пытаюсь, но мало что выходит.

Нашел в Энтети рендерер метод renderHand. Я так понимаю, что это он. В шине событий форджа вписал ивент secnHand(RenderHandEvent event)... Только делать с ним дальше? Дело в том, что очень много пирватных переменных в этом классе(EntityRenderer) и просто Ctrl C + Ctrl V получается много ошибок. Ну это ладно. Я часть переменных перекинул в шину событий, скопировал. Но там в методе из которого я беру код(рендера руки), есть переменные из других методов. Получается мне и методы копировать надо или что? Я вкрай запутался. Объясни этот момент, пожайлуста.
 
все методы и переменные себе тащи. Ничего страшного
Java:
  private void renderHand(float partialTicks, int pass)
    {
        if (!this.debugView)
        {
            GlStateManager.matrixMode(5889);
            GlStateManager.loadIdentity();
            float f = 0.07F;

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(-(pass * 2 - 1)) * 0.07F, 0.0F, 0.0F);
            }

            Project.gluPerspective(this.getFOVModifier(partialTicks, false), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance * 2.0F);
            GlStateManager.matrixMode(5888);
            GlStateManager.loadIdentity();

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(pass * 2 - 1) * 0.1F, 0.0F, 0.0F);
            }

            GlStateManager.pushMatrix();
            this.hurtCameraEffect(partialTicks);

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }

            boolean flag = this.mc.getRenderViewEntity() instanceof EntityLivingBase && ((EntityLivingBase)this.mc.getRenderViewEntity()).isPlayerSleeping();

            if (!net.minecraftforge.client.ForgeHooksClient.renderFirstPersonHand(mc.renderGlobal, partialTicks, pass))
            if (this.mc.gameSettings.thirdPersonView == 0 && !flag && !this.mc.gameSettings.hideGUI && !this.mc.playerController.isSpectator())
            {
                this.enableLightmap();
                this.itemRenderer.renderItemInFirstPerson(partialTicks);
                this.disableLightmap();
            }

            GlStateManager.popMatrix();

            if (this.mc.gameSettings.thirdPersonView == 0 && !flag)
            {
                this.itemRenderer.renderOverlays(partialTicks);
                this.hurtCameraEffect(partialTicks);
            }

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }
        }
    }
Вот метод. Строчка где ForgeHooksClient это форджевский хук с эвентом. Все методы которые тут вызываются тебе соотвественно надо скопировать себе.
 
все методы и переменные себе тащи. Ничего страшного
Java:
  private void renderHand(float partialTicks, int pass)
    {
        if (!this.debugView)
        {
            GlStateManager.matrixMode(5889);
            GlStateManager.loadIdentity();
            float f = 0.07F;

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(-(pass * 2 - 1)) * 0.07F, 0.0F, 0.0F);
            }

            Project.gluPerspective(this.getFOVModifier(partialTicks, false), (float)this.mc.displayWidth / (float)this.mc.displayHeight, 0.05F, this.farPlaneDistance * 2.0F);
            GlStateManager.matrixMode(5888);
            GlStateManager.loadIdentity();

            if (this.mc.gameSettings.anaglyph)
            {
                GlStateManager.translate((float)(pass * 2 - 1) * 0.1F, 0.0F, 0.0F);
            }

            GlStateManager.pushMatrix();
            this.hurtCameraEffect(partialTicks);

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }

            boolean flag = this.mc.getRenderViewEntity() instanceof EntityLivingBase && ((EntityLivingBase)this.mc.getRenderViewEntity()).isPlayerSleeping();

            if (!net.minecraftforge.client.ForgeHooksClient.renderFirstPersonHand(mc.renderGlobal, partialTicks, pass))
            if (this.mc.gameSettings.thirdPersonView == 0 && !flag && !this.mc.gameSettings.hideGUI && !this.mc.playerController.isSpectator())
            {
                this.enableLightmap();
                this.itemRenderer.renderItemInFirstPerson(partialTicks);
                this.disableLightmap();
            }

            GlStateManager.popMatrix();

            if (this.mc.gameSettings.thirdPersonView == 0 && !flag)
            {
                this.itemRenderer.renderOverlays(partialTicks);
                this.hurtCameraEffect(partialTicks);
            }

            if (this.mc.gameSettings.viewBobbing)
            {
                this.applyBobbing(partialTicks);
            }
        }
    }
Вот метод. Строчка где ForgeHooksClient это форджевский хук с эвентом. Все методы которые тут вызываются тебе соотвественно надо скопировать себе.
Откуда этот код? Я не понимаю... У меня код из майн разобранного МСР и такого нет =( и как мне метод рендера руки засунуть в метод ивента рендера RenderHandEvent?
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Начал копировать методы из майна. Половина переменных не инициализированы а другая не работает без методов из класса рендера. Что, мне весь класс копировать или что? Я не понимаю...
 
Последнее редактирование:
Назад
Сверху